解题思路:
利用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语言代码)浏览:1025 |
C二级辅导-同因查找 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:607 |
字符串比较 (C语言代码)答案错误????浏览:597 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1195 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:506 |
回文数字 (C语言代码)浏览:2510 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:549 |
循环入门练习6 (C语言代码)浏览:969 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:575 |