首页 > 代码库 > [luoguP1134] 阶乘问题(数论)
[luoguP1134] 阶乘问题(数论)
传送门
我直接用 long long 暴力,居然过了
——代码
#include <cstdio>int n;long long x, ans = 1;int main(){ int i; scanf("%d", &n); for(i = 1; i <= n; i++) { x = i; while(!(x % 10)) x /= 10; x %= 1000000000; ans *= x; while(!(ans % 10)) ans /= 10; ans %= 1000000000; } printf("%lld\n", ans % 10); return 0;}
有个比较好理解的方法是
因为末尾的0是由因子 2 和 因子 5 乘出来的
所以取出每一个数的因数 2 和 5,两者相抵消,最后再把没有抵消掉的乘回去
[luoguP1134] 阶乘问题(数论)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。