2184: 不是防AK题
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 259 Solved: 55
Submit Status Web Board
Description
每一个数都有若干个后缀零,比如100有2个、10有1个、1有0个,那么问题来了,已知整数n,求x使其满足x!的后缀零个数为n
Input
输入一个数T (≤ 10000),表示有T组数据
接下来T行每一行有一个数n (1 ≤ n≤10^8)
Output
每组数据首先输出当前组数(格式参见Sample Output),之后输出满足情况时最小的x,如果x不存在,输出no
Sample Input
3
1
2
5
Sample Output
Case 1: 5
Case 2: 10
Case 3: no
HINT
Source
这个题很有意思,就是计算n的阶乘中包含几个5,就是进行计算这个阶乘里有多少个0.只不过这个数据有点大,需要用到二分法进行一个一个去查找。
#include<stdio.h>
int j(int ss){
int sum = 0;
while(ss){
ss = ss / 5;
sum = sum + ss;
}
return sum;
}
int main(){
int cas;
scanf("%d",&cas);
for(int t = 1; t <= cas; t++ ){
int n;
scanf("%d",&n);
int ans = 0;
int l = 1, r = 1000000000;
while(l<=r){
int mid = (l+r)/2;
if(j(mid) == n){
ans = mid;
r=mid-1;
}
else
if(j(mid) > n){
r= mid -1;
}
else
l=mid+1;
}
if(ans!=0){
printf("Case %d: %d\n",t,ans);
}else
printf("Case %d: no\n",t);
}
return 0;
}