A - Trailing Zeroes (III)
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
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
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
#include<stack>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=0x3f3f3f3f;
int get(int x){
int q = 0;
while(x){
q += x/5;
x /= 5;
}
return q;
}
void fun(int n){
int l = 0,r = MAXN;
while(l <= r){
int mid = (l+r)>>1;
if(get(mid) >= n){ r = mid - 1;
}
else{ l = mid+1;
}
}
if(get(l) == n){ printf("%d\n",l);
}
else{ printf("impossible\n");
}
}
int main(){
int t,q,text = 0;
cin>>t;
while(t--){
cin>>q;
printf("Case %d: ",++text);
fun(q);
}
return 0;
}