zoukankan      html  css  js  c++  java
  • LightOJ 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.


    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

    分析:1到N的阶乘结尾所含的0的数目依次增大(不减),可以用二分法。

    #include<cstdio>
    
    int f(int n)
    {
        int ans=0;
        while(n)
        {
            ans+=n/5;
            n/=5;
        }
        return ans;
    }
    
    int main()
    {
        int T,cas=0,Q;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&Q);
            int l=5,r=400000015;
            while(l<r)
            {
                int mid=(l+r)>>1;
                if(f(mid)>=Q) r=mid;
                else l=mid+1;
            }
            if(f(l)==Q) printf("Case %d: %d
    ",++cas,l);
            else printf("Case %d: impossible
    ",++cas);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    java
    java
    Java hashCode() 和 equals()
    Python可变参数*和**
    Hadoop Mapreduce分区、分组、二次排序
    Java 内部类
    java valueOf()函数
    java接口和抽象类
    Java instanceof运算符
    JAVA ==号和equals()的区别
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8620078.html
Copyright © 2011-2022 走看看