Lightoj 1138 ( Trailing Zeroes (III))

来源:互联网 发布:淘宝店铺pc端装修视频 编辑:程序博客网 时间:2024/06/05 14:51

 Trailing Zeroes (III)

 

Description

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

3

1

2

5

Sample Output

Case 1: 5

Case 2: 10

Case 3: impossible

题意:问末尾有n个0的最小阶乘

题解:hdu 1124的变形,阶乘+二分。

<span style="font-size:18px;">#include<cstdio>#define N 0x3f3f3f3f//不要写成1e8using namespace std;long long find (long long x){long long cnt=0;while (x){cnt+=x/5;x/=5;}return cnt;}long long solve(long long y){long long le=1;long long ri=N,s;long long mid;long long ans=-1;while (le<=ri){mid=(le+ri)/2;s=find(mid);if (s==y){ans=mid;ri=mid-1;}else if (s>y){ri=mid-1;}else if (s<y)le=mid+1;}return ans;}int main(){int t,cas=1;long long q,ans;scanf ("%d",&t);while (t--){scanf ("%lld",&q);printf ("Case %d: ",cas++);ans=solve(q);if (ans==-1)printf ("impossible\n");elseprintf ("%lld\n",ans);}return 0;}</span>


0 0
原创粉丝点击