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;
}