zoukankan      html  css  js  c++  java
  • Trailing Zeroes (I) LightOJ

    Trailing Zeroes (I) LightOJ - 1028

    题目链接:https://vjudge.net/problem/LightOJ-1028

    题目:

    We know what a base of a number is and what the properties are. For example, we use decimal number system, where the base is 10 and we use the symbols - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. But in different bases we use different symbols. For example in binary number system we use only 0 and 1. Now in this problem, you are given an integer. You can convert it to any base you want to. But the condition is that if you convert it to any base then the number in that base should have at least one trailing zero that means a zero at the end.

    For example, in decimal number system 2 doesn't have any trailing zero. But if we convert it to binary then 2 becomes (10)2 and it contains a trailing zero. Now you are given this task. You have to find the number of bases where the given number contains at least one trailing zero. You can use any base from two to infinite.


    Input

    Input starts with an integer T (≤ 10000), denoting the number of test cases.

    Each case contains an integer N (1 ≤ N ≤ 1012).

    Output

    For each case, print the case number and the number of possible bases where N contains at least one trailing zero.

    Sample Input

    3

    9

    5

    2

    Sample Output

    Case 1: 2

    Case 2: 1

    Case 3: 1

    Note

    For 9, the possible bases are: 3 and 9. Since in base 3; 9 is represented as 100, and in base 9; 9 is represented as 10. In both bases, 9 contains a trailing zero.

    题意:说给一个10进制数,让你转化成任意进制的数,该数末位为0,有几种方案?

    思路:其实当该十进制数模这个进制时为0时,那么转化后的数最后一位都为能,所以这题相当于就是求有多少个因子,用唯一分解求就行了因子个数为(1+a1)(1+a2)(1+a3)...,a1,a2,a3为质因数的指数,注意因子数要减一,因为1进制无意义的

    //
    // Created by hanyu on 2019/8/11.
    //
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cstdio>
    #include<vector>
    #include<queue>
    #include<cmath>
    #include<map>
    #include<stack>
    using namespace std;
    const int maxn=1e6+1000;
    typedef long long ll;
    int prime[maxn],isprime[maxn];
    ll len;
    void getp()
    {
        memset(isprime,0,sizeof(isprime));
        for(int i=2;i<maxn;i++)
        {
            if(!isprime[i])
            {
                for(int j=i*2;j<maxn;j+=i)
                {
                    isprime[j]=1;
                }
            }
        }
        for(int i=2;i<maxn;i++)
        {
            if(!isprime[i])
                prime[len++]=i;
        }
    }
    ll fenjie(ll n)
    {
        long long int ans=1;
        for(int i=0;i<len&&prime[i]*prime[i]<=n;i++)
        {
    
            if(n%prime[i]==0)
            {
                int num=0;
                while(n%prime[i]==0)
                {
                    num++;
                    n/=prime[i];
                }
                ans*=(1+num);
                if(n==1)
                    break;
            }
        }
        if(n>1)
            ans*=2;
        return ans-1;
    }
    int main()
    {
        getp();
        int T;
        scanf("%d",&T);
        int casee=0;
        ll n;
        while(T--)
        {
            scanf("%lld",&n);
            printf("Case %d: %lld
    ",++casee,fenjie(n));
        }
        return 0;
    }
  • 相关阅读:
    多线程-共享全局变量问题
    多线程-共享全局变量
    线程-注意点
    线程
    最短网络Agri-Net
    2455 繁忙的都市
    2597 团伙
    5929 亲戚
    5969 [AK]刻录光盘
    JavaEE Tutorials (6)
  • 原文地址:https://www.cnblogs.com/Vampire6/p/11336756.html
Copyright © 2011-2022 走看看