解题思路:
利用n!求n!的尾数是多少
使用一个公式: (m*n)%c = (m%c*n%c)%c
如 (12*13)%10 = 156%10 = 6;
使用公式就是 (12%10 * 13%10)%10 =( 2*3 )%10= 6%10 = 6;
可以看出结果是一样的
所以我们就利用这一性质
注意事项:
参考代码:
long num = 1;
int n;
cin >> n;
//求n!后%1亿后的余数
for (int i = 1; i <= n; i++){
num *= i%100000000;
num %= 100000000;
}
//因为考虑到num最右边是有很多0的,如2000000,那么我们就要
//把0给去掉,是0就num/10,否则就是第一个非零的数字就输出
while (1){
int x = num % 10;
if (x != 0)break;
else num /= 10;
}
cout << num % 10 ;
return 0;
0.0分
3 人评分