解题思路:
利用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语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复