码迷,mamicode.com
首页 > 其他好文 > 详细

[luoguP1134] 阶乘问题(数论)

时间:2017-06-19 19:35:05      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:i++   blog   ret   while   can   lan   std   das   bsp   

传送门

 

我直接用 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] 阶乘问题(数论)

标签:i++   blog   ret   while   can   lan   std   das   bsp   

原文地址:http://www.cnblogs.com/zhenghaotian/p/7049956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!