Suffix Zeroes

Suffix Zeroes

時間限制: 1 Sec  內存限制: 128 MB

題目描述

這個遊戲超休閒的~。現在你需要找一個自然數n,你找的自然數需要滿足n!的末尾恰好有k個0(當然我們都是十進制下的數,n! = 1*2*3*…*n)。比如:5!= 120,尾部恰好有一個0。

輸入

先輸入T,代表有T組數據(T ≤10000)
接下來的T行每一行都包括一個數字k(1≤k≤108)。具體含義請見題意。

輸出

 如果能找到這樣的數,請輸出滿足條件的最小的自然數n,如果不存在這樣的自然數,請輸出impossible

樣例輸入

2
1
5

樣例輸出

Case 1: 5
Case 2: impossible

來源/分類

2018浙江理工大學新生賽 

題解:

末尾有一個零就代表有一個因數10,而10=2*5

當n>=5時,2的個數肯定比5多,所以只要枚舉5的個數就行了

而能分解出5的數量爲n/5+n/(5^2)+n/(5^3)……

所以5的個數小於5e8——直接二分答案再以上述方法檢查就AC了

代碼:

#include<bits/stdc++.h>
#define N 10005
#define Mod 1000007
#define M 10005
#define eps 1
using namespace std;
int check(int x)
{
    int sum=0,a=5;
    while(x>=a)
    {
        sum += x / a;
        a *= 5;
    }
    return sum;
}
int main()
{
    int t;
    scanf("%d",&t);
    for(int i = 1;i <= t; ++i)
    {
        int k;
        scanf("%d",&k);
        int l = 1,r = 5e8;
        while(r - l > eps)
        {
            int mid = (l + r) / 2;
            if(check(mid) >= k) r = mid;
            else l = mid;
        }
        printf("Case %d: ",i);
        if(check(r) == k) printf("%d\n",r);
        else puts("impossible");
    }
    return 0;
}

 

發佈了57 篇原創文章 · 獲贊 12 · 訪問量 4816
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章