解题思路:
利用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 人评分
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:562 |
点我有惊喜!你懂得!浏览:2214 |
破解简单密码 (C语言代码)浏览:1766 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:597 |
字符串输入输出函数 (Java代码)浏览:1440 |
Minesweeper (C语言描述,蓝桥杯)浏览:1126 |
字符逆序 (C语言代码)浏览:460 |
1054题解浏览:467 |
C二级辅导-公约公倍 (C语言代码)浏览:483 |
简单的a+b (C语言代码)浏览:504 |