题目链接:https://cn.vjudge.net/contest/70017#problem/N
题目大意:给你一个数n,让你求出后缀有n个零的最小的x!。
题解:二分1到5*1e8+5之间的数,然后计算这个数一直除以5的和。
代码;
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int kk(int num)
{
int ans=0;
while(num)
{
ans+=num/5;
num=num/5;
}
return ans;
}
int main()
{
int a;
int T,m=0;
scanf("%d",&T);
while(T--)
{
++m;
scanf("%d",&a);
int l=1,r=5*1e8+5;
int ans=0;
while(l<=r)
{
int mid=(l+r)>>1;
if(kk(mid)>a)
{
r=mid-1;
}
else if(kk(mid)==a)
{
ans=mid;
r=mid-1;
}
else
{
l=mid+1;
}
}
if(ans!=0)
printf("Case %d: %d\n",m,ans);
else printf("Case %d: impossible\n",m);
}
return 0;
}