求阶乘
求N(N〈1000)的阶乘从右边开始数,第一个非零数是几?这个数的前面数又是几?
例如:12!=435456000,则从右开始数第一个非零数是6,6前面数是5.
分析:14!=1x2x3x4x5x6x7x8x9x10x11x12x13x14 = 13!x14 = 6227020800x14
6227020800x14 如果需要求第一个非零个位数就相当于 8x14=112 112%10=2
但是为了避免个位和十位出现相乘为零的情况,所以需要用后三位非零数字相乘即 208x14=2912 2912%10=2
#include "stdio.h"
int main()
{
int i,n,s=1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
s *= i;
while (s % 10 == 0)
{
s /= 10;
};
s %= 10000;
}
printf("%d\n", s%10);
return 0;
}