链接:http://lightoj.com/volume_showproblem.php?problem=1138
非常基础的一道题,首先n的阶乘的末尾的零是靠5*2出现的,所以只需统计有多少个5就行了 由于数据较大 故用二分搜索 大致猜个范围 套下模板就能过 做的时候没看清题目说的是末尾的零以为是全部零orz。。。
代码:
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
using namespace std;
typedef long long ll;
ll cnum(ll x)
{
ll sum=0;
while(x)
{
sum+=x/5;
x/=5;
}
return sum;
}
int main()
{
int t,kase=0;
cin>>t;
while(t--)
{
kase++;
int flag=0;
ll l=1;
ll r=100000000000;
ll q,m;
scanf("%lld",&q);
while(l<r)
{
m=l+(r-l)/2;
if(cnum(m)>=q) r=m;
else l=m+1;
}
if(cnum(l)==q) printf("Case %d: %lld\n",kase,l);
else printf("Case %d: impossible\n",kase);
}
}