Trailing Zeroes (III)(lightoj 二分好题)
2015-09-19 20:05
337 查看
1138 - Trailing Zeroes (III)
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.
Each case contains an integer Q (1 ≤ Q ≤ 108) in a line.
题解:这道题要找末尾0的个数所需要的最小阶乘,因为想到10=2*5,然而2是很多数的质因数,数目要大于质因数5的数目,所以只考虑5的质因数的个数,便为末尾0的个数,所以
int q=0;
while(x){
q+=x/5;
x/=5;
}
这点便可以得出x!末尾0的个数;
用二分,从无穷大开始找,找到Q就是答案;
代码:
PDF (English) | Statistics | Forum |
Time Limit: 2 second(s) | Memory Limit: 32 MB |
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 | Output for Sample Input |
3 1 2 5 | Case 1: 5 Case 2: 10 Case 3: impossible |
int q=0;
while(x){
q+=x/5;
x/=5;
}
这点便可以得出x!末尾0的个数;
用二分,从无穷大开始找,找到Q就是答案;
代码:
#include<stdio.h> const int MAXN=0x3f3f3f3f;//这个要足够大才能找到10^8 int getq(int x){ int q=0; while(x){ q+=x/5; x/=5; } return q; } void erfen(int n){ int l=0,r=MAXN; while(l<=r){ int mid=(l+r)>>1; if(getq(mid)>=n)r=mid-1;//二分这点注意 else l=mid+1; } if(getq(l)==n)printf("%d\n",l); else puts("impossible"); } int main(){ int T,Q,flot=0; scanf("%d",&T); while(T--){ scanf("%d",&Q); printf("Case %d: ",++flot); erfen(Q); } return 0; }
相关文章推荐
- relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared objec
- 增益 Gain 分贝 dB
- Light oj 1138 - Trailing Zeroes (III)
- mexTrainDL - SPAms
- “warning C4251::CStringT<BaseType,StringTraits>需要有 dll 接口”解决办法
- Git Step By Step - Step 1: Start Over Again
- AI-路径导航(最短路径算法 and A算法)
- xcode7报错:does not contain bitcode
- nginx: [emerg] getpwnam(“www”) failed
- poj3250 Bad Hair Day
- 关于在虚拟设备上运行项目的时候遇到INSTALL_FAILED_NO_MATCHING_ABIS,提示卸载以前安装的版本
- Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统
- LintCode --number-of-airplanes-in-the-sky(数飞机)
- *LeetCode-Container With Most Water
- office outlook 2010/2013 问题 求助 help
- A. Raising Bacteria
- 错误Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1
- 纪念人工智能(AI)奠基60周年(续)
- Raising Bacteria (Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] )