Trailing Zeroes (III)

来源:互联网 发布:苹果数据接口转usb 编辑:程序博客网 时间:2024/06/03 06:48


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

#include <cstdio>  #define MAX 0x7fffffff      //最大的 long int型数   int cal(int n)      //计算n的阶乘后0的个数  {      int ans = 0;      while (n)      {          ans += n/5;          n /= 5;      }      return ans;  }  int main()  {      int u;      int n;      scanf ("%d",&u);      int num = 1;      while (u--)      {          scanf ("%d",&n);          printf ("Case %d: ",num++);          int left = 0,right = MAX;          int mid;          while (left <= right)          {              mid = (left + right)>>1;      //就是(left + right)/2的意思              if (cal(mid) >= n)                  right = mid - 1;              else                  left = mid +1;          }          if (cal(left) == n)     //若最后一次逼近的时候满足了条件,此时left==mid(无论left与right相差1还是相等)               printf ("%d\n",left);          else              printf ("impossible\n");      }      return 0;  }  


原创粉丝点击