1138 - Trailing Zeroes (III)
Time Limit: 2 second(s) | Memory Limit: 32 MB |
You task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in decimal notation. As you know N! = 1*2*...*N. For example, 5! = 120, 120 contains one zero on the trail.
Input
Input starts with an integer T (≤ 10000), denoting the number of test cases.
Each case contains an integer Q (1 ≤ Q ≤ 108) in a line.
Output
For each case, print the case number and N. If no solution is found then print 'impossible'.
Sample Input | Output for Sample Input |
3 1 2 5 | Case 1: 5 Case 2: 10 Case 3: impossible |
<span style="font-size:18px;">#include<cstdio>
#define max 0x7f7f7f7f
#define LL long long
LL n;
LL judge(LL mid)
{
LL sum=0,i;
while(mid)
{
sum+=mid/5;
mid/=5;
}
return sum;
}
int main()
{
int t,text=1;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
printf("Case %d: ",text++);
LL left=0,right=max,mid;
while(left<=right)
{
mid=(right+left)>>1;//到了最后left和right值肯定相等这时的mid也就是最优解
if(judge(mid)>=n)//我们的条件是满足的话right=mid-1;那么跳出循环时
{ //left是最优解
right=mid-1;
}
else
{
left=mid+1;
}
}
if(judge(left)==n)
printf("%lld\n",left);
else
printf("impossible\n");
}
return 0;
}</span>