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

    题意就是给你一个数让你找它的正因子个数(包括自身,不包括1),这个地方用到一个公式,如果不用的话按正常思路来写会TL什么的反正就是不容易写对。

    求任意一个大于1的整数的正因子个数

    首先任意一个数n,n=P1^a1 * P2^a2 * P3^a3 *……Pn^an;

    任意的整数n可以分解为m个素数ai次幂的连续乘机,这个地方解释不清自己再理解一下(Pi都为素数,依次往后pi越来越大,ai就是次幂,自己可以找几个任意整数n来套一下这个公式就会明白了)

    然后正因子个数和:sum=(1+a1)*(1+a2)*(1+a3)……*(1+an);

    用这两个公式本题就可以轻松解决啦(这里还是不清楚的就套几个数就理解这两个公式了,是完全正确的哦);

    AC代码如下:

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    int pri[1000001];
    int tt[1000001];
    int s=0;
    void dabiao() //打个素数表会节省很多时间
    {   int j;
        memset(tt,0,sizeof(tt));
        tt[1]=1;
        tt[0]=1;
        for(int i=2;i<=1000000;i++)
        {
            if(tt[i]!=1)
            {
                pri[s++]=i;
                for(j=i+i;j<=1000000;j+=i)
                    tt[j]=1;
            }
        }
        return ;
    }
    int main()
    {
        int m,i,j,k,t,cas=0;
        long long n,num,ans;
        scanf("%d",&t);
        dabiao();
        while(t--)
        {
            scanf("%lld",&n);
            num=1;
            for(i=0;i<s&&pri[i]*pri[i]<=n;i++)
            {
                ans=0;
                if(n%pri[i]==0)
                {
    
                    while(n%pri[i]==0)//此处就是来找素数的N次幂,存起来相乘来计算SUM
                    {
                        ans++;
                        n/=pri[i];
                    }
    
                }
            num=num*(ans+1);
            }
                if(n>1)//这个地方就不解释啦,自己想想咯
                num*=2;
            printf("Case %d: %lld
    ",++cas,num-1);
        }
        return 0;
    }
  • 相关阅读:
    hao947 : Mybatis resultMap配置插入和主键自增返回 : 好947
    VelocityTracker简单介绍
    Java中StringBuilder的清空方法比較
    jquery中的动画
    数据库索引的作用和长处缺点
    很具体GC学习笔记
    深入理解 JBoss 7/WildFly Standalone 模式启动过程
    curl命令具体解释
    【免费】iPhone上最好用的短信群发软件: 高速短信4.1
    Project interpreter not specified(eclipse+pydev)
  • 原文地址:https://www.cnblogs.com/nr1999/p/8459934.html
Copyright © 2011-2022 走看看