ZZULIOJ 2184: 不是防AK题

来源:互联网 发布:战舰世界雷鸣数据 编辑:程序博客网 时间:2024/05/21 22:38

2184: 不是防AK题

Time Limit: 1 Sec  Memory Limit:64 MB
Submit: 259  Solved: 55

SubmitStatusWeb 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

河南省多校连萌(五)

SubmitStatusWeb Board


代码来源:题解
代码:
#include<bits/stdc++.h>using namespace std;long long solve(long long x) {long long ans=0;while(x){ans+=x/5;x/=5;}return ans;}//求数x有多少个后缀0 ,假如是二进制则5改成2,因为乘2肯定进位为0 int main(){int T;scanf("%d",&T);int cas=1;while(T--){int num;scanf("%d",&num);long long  ans=0;;long long  l=1,r=1000000000000;while(l<=r){int mid=(l+r)/2;if(solve(mid)==num){ans=mid;r=mid-1;}else if(solve(mid)>num) r=mid-1;else l=mid+1;}if(ans!=0)printf("Case %d: %lld\n",cas++,ans);else printf("Case %d: no\n",cas++);}return 0;}



原创粉丝点击