light oj 1138 - Trailing Zeroes (III)《《二分》》
2016-03-23 22:00
459 查看
D - D
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
Submit
Status
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
直接打表会超内存,,,但是应该是正确的,,,,,,
是5的倍数就会加0,,是5的几次方就加几个0.。
二分,,,,,
打表代码:
代码:
继续二分,,,
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
Submit
Status
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
直接打表会超内存,,,但是应该是正确的,,,,,,
是5的倍数就会加0,,是5的几次方就加几个0.。
二分,,,,,
打表代码:
#include<cstdio> #include<cstring> #define MA 100000000 int ge[100000100]={0}; int shu(int xx) { int li=0; while (xx%5==0) { li++; xx/=5; } return li; } int main() { int p=1; for (int i=1;i<80000010;i++) { if (i%5==0) { p+=shu(i); } if (p>100000000) { // printf("%d 11111111\n",i); break; } ge[p++]=i*5; } int t,n;scanf("%d",&t); for (int ca=1;ca<=t;ca++) { scanf("%d",&n); if (ge ) printf("Case %d: %d\n",ca,ge ); else printf("Case %d: impossible\n",ca); } return 0; }
代码:
#include<cstdio> int ge(int xx) { int li=0; while (xx>4) { xx/=5; li+=xx; } return li; } int main() { int ca,n,t;scanf("%d",&t); for (ca=1;ca<=t;ca++) { scanf("%d",&n); int qian,huo,i,left=0,right=400001000,shu,cen,s=0; while (left<=right) { cen=(left+right)/2; shu=ge(cen); if (shu==n) { for (i=1;i<6;i++)//开始让i<5;;一直没找到错误<img alt="哭" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/cry.gif" /> { if (ge(cen-i)!=n) { s=cen-i+1; break; } } break; } if (shu>n) right=cen-1; else left=cen+1; } if (s==0) printf("Case %d: impossible\n",ca); else printf("Case %d: %d\n",ca,s); } return 0; }
继续二分,,,
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define LL long long LL n,le,ri,mid,ans,kp; LL zhao(LL xx) { LL sk=0; while (xx/5) { sk+=(xx/5); xx/=5; } return sk; } int main() { int t; scanf("%d",&t);//printf("gou 666\n"); for (int ca=1;ca<=t;ca++) { scanf("%d",&n); // printf("5d 6666666\n"); le=0;ri=10000000000; ans=-1; while (ri>=le) { mid=(ri+le)/2; kp=zhao(mid); if (kp==n) { ans=mid; ri=mid-1; } else if(kp>n) ri=mid-1; else le=mid+1; } if (ans==-1) printf("Case %d: impossible\n",ca); else printf("Case %d: %d\n",ca,ans); } return 0; }
相关文章推荐
- 杭电 Problem1787 GCD Again
- hdoj 1867 A + B for you again【kmp,前缀与后缀的匹配】
- 感动 Mr.Snail 作品集
- LeetCode OJ 217. Contains Duplicate
- 在rails中使用bcrypt进行密码的加密
- UVALive 7483 Air Conditioned Minions
- vector中插入pair
- INSTALL_PARSE_FAIL_NO_CERTIFICATE 打jar包的时候遇到的问题。
- leetcode 11. Container With Most Water
- HDU 2457:DNA repair
- 杭电1787GCD Again(欧拉函数)
- [Leetcode 265]Paint House II
- [Leetcode 256]Paint House
- [AI]根据葡萄特征聚类
- [AI](加入随机因素)局部搜索解决N皇后问题(含源码)
- BN: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- IBM openblockchain学习(二)--chaincode源码分析
- public static void main(String args[]){ }中的String args[ ]
- Convention 插件学习
- PAT 1014 Waiting in Line (30)