本文主要是介绍2184: 不是防AK题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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;}elseif(j(mid) > n){r= mid -1;}elsel=mid+1;}if(ans!=0){printf("Case %d: %d\n",t,ans);}elseprintf("Case %d: no\n",t);}return 0;
}
这篇关于2184: 不是防AK题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!