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;
    }
  • 相关阅读:
    用vue ui创建的项目怎么关闭eslint校验
    SQL修改表约束实现
    获取微信公众号的粉丝openid以及用openid获取unionID
    怎么停掉或关闭运行的npm run dev
    .NET解密得到UnionID
    微信获取信息发生错误(两个access_token的区别),错误代码:40001,说明:invalid credential, access_token is invalid or not latest hints
    微信获取不了用户头像等信息
    微信sdk上传图片大小1k,损坏的问题以及微信上传图片需要的配置
    微信订阅号中获取openid以及个人信息
    Bootstrap中宽度大于指定宽度时有空白的解决方法
  • 原文地址:https://www.cnblogs.com/Vampire6/p/11336756.html
Copyright © 2011-2022 走看看