LightOJ 1138 Trailing Zeroes (III)

来源:互联网 发布:mac文稿无端占内存 编辑:程序博客网 时间:2024/06/05 16:36

题目:http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1138


这是个二分TAT……

分的是5的个数。因为末尾有0就是乘以10,10是由2*5得出来的。在N!里面2比5多得多,所以只用算5的个数就可以了。

5的个数的算法具体看代码吧,我觉得比较奇妙。


#include<stdio.h>#include<string.h>long long OK(long long x){long long sum=0;while(x){sum+=x/5;x/=5;}return sum;}int main(){int i,T,k=1;long long n;scanf("%d",&T);while(T--){scanf("%lld",&n);int flag=0;long long l=1,r=1000000000,mid;while(l<=r){mid=(l+r)/2;if(OK(mid)>=n)r=mid-1;elsel=mid+1;}if(OK(l)==n)printf("Case %d: %lld\n",k++,l);elseprintf("Case %d: impossible\n",k++);}return 0;}


0 0