Factorials
The factorial of an integer N, written N!, is the product of all
the integers from 1 through N inclusive. The factorial quickly becomes
very large: 13! is too large to store in a 32-bit integer on most
computers, and 70! is too large for most floating-point variables. Your
task is to find the rightmost non-zero digit of n!. For example, 5! =
1 * 2 * 3 * 4 * 5 = 120, so the rightmost non-zero digit of 5! is 2.
Likewise, 7! = 1 * 2 * 3 * 4 * 5 * 6 * 7 = 5040, so the rightmost non-zero
digit of 7! is 4.
PROGRAM NAME: fact4
INPUT FORMAT
A single positive integer N no larger than 4,220.
SAMPLE INPUT (file fact4.in)
7
OUTPUT FORMAT
A single line containing but a single digit: the right most non-zero
digit of N! .
SAMPLE OUTPUT (file fact4.out)
4
/*
LANG: C
TASK: fact4
*/
#include<stdio.h>
/*注意:不是只有最后一个数才影响阶乘结果的最后一位数
比如:936 * 25 等于 4680 + 18720 = 23400,最后一位是4.
如果只取936最后一位跟25相乘是6 * 25 = 150,最后一位是5.
*/
int last(int n)
{
int r;
while (1)
{
r = n % 10;
if (r)
{
return n % 1000;
}
n /= 10;
}
}
int main()
{
freopen("fact4.in", "r", stdin), freopen("fact4.out", "w", stdout);
int n, m, i;
scanf("%d", &n);
m = 1;
for (i = 2; i <= n; i++)
{//printf("%d %d\n", m, i);
//m = NonZero(m) * NonZero(i);
m *= i;
m = last(m);
}
printf("%d\n", m % 10);
fclose(stdin), fclose(stdout);
//system("pause");
return 0;
}