zoukankan      html  css  js  c++  java
  • Trailing Zeroes (III)(lightoj 二分好题)

    1138 - Trailing Zeroes (III)
    Time Limit: 2 second(s) Memory Limit: 32 MB

    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

    Output for Sample Input

    3

    1

    2

    5

    Case 1: 5

    Case 2: 10

    Case 3: impossible

     题解:这道题要找末尾0的个数所需要的最小阶乘,因为想到10=2*5,然而2是很多数的质因数,数目要大于质因数5的数目,所以只考虑5的质因数的个数,便为末尾0的个数,所以

    int q=0;
    while(x){
    q+=x/5;
    x/=5;
    }

    这点便可以得出x!末尾0的个数;

    用二分,从无穷大开始找,找到Q就是答案;

    代码:

     1 #include<stdio.h>
     2 const int MAXN=0x3f3f3f3f;//这个要足够大才能找到10^8 
     3 int getq(int x){
     4     int q=0;
     5     while(x){
     6         q+=x/5;
     7         x/=5;
     8     }
     9     return q;
    10 }
    11 void erfen(int n){
    12     int l=0,r=MAXN;
    13     while(l<=r){
    14         int mid=(l+r)>>1;
    15         if(getq(mid)>=n)r=mid-1;//二分这点注意 
    16         else l=mid+1;
    17     }
    18     if(getq(l)==n)printf("%d
    ",l);
    19     else puts("impossible");
    20 }
    21 int main(){
    22     int T,Q,flot=0;
    23     scanf("%d",&T);
    24     while(T--){
    25         scanf("%d",&Q);
    26         printf("Case %d: ",++flot);
    27          erfen(Q);
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    poj1228 Grandpa's Estate
    poj1113 Wall
    poj2826 An Easy Problem?!
    poj1269 Intersecting Lines
    poj3304 Segments
    BZOJ3832Rally题解
    BZOJ2802Warehouse Store题解
    李超树详解
    BZOJ4241历史研究题解
    洛谷2050 BZOJ2897美食节题解
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4822127.html
Copyright © 2011-2022 走看看