zoukankan      html  css  js  c++  java
  • 第十一届蓝桥杯B组国赛C/C++

    题意

    100的阶乘有多少个约数?

    唯一分解定理

    唯一分解定理:N = p1a1*p2a2p3^a3 ... *pn^an(其中p1、p2、... pn为N的因子,a1、a2、... 、an分别为因子的指数)

    求N的因子个数:sum=(1 + a1)*(1 + a2)*(1 + a3)*...*(1 + an)

    本题答案是:39001250856960000
    类似题见:https://www.cnblogs.com/OFSHK/p/11329177.html

    AC代码

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    
    bool book[110];
    int p[110],a[110],cnt=0;
    
    //180=2*2*3*3*5=2^2 * 3^2 *5
    //180的正约数个数=(1+2)(1+2)*(1+1)=18
    
    //void init() // 求100以内的所有素数(包括100)
    //{
    //    for(int i=1; i<=100; i++)
    //    {
    //        if(i==1) continue;
    //        if(!book[i])
    //        {
    //            p[cnt++]=i;
    //            for(int j=i+i; j<=100; j+=i)
    //                book[j]=1;
    //        }
    //    }
    //}
    
    //ll yinzi(int a)//求N的因子个数sum=(1 + a1)*(1 + a2)*(1 + a3)*...*(1 + an);
    //{
    //    ll sum=1;
    //    for(int i=0; i<cnt&&(p[i]*p[i]<=a); i++)
    //    {
    //        if(p[i]>a) break;
    //        if(a%p[i]==0)
    //        {
    //            ll x=0;
    //            while(a%p[i]==0)
    //                a/=p[i],x++;
    //            sum*=(1+x);
    //        }
    //    }
    //    if(a>1)//说明还剩有1个素数因子没有被算入,根据公式可得
    //        sum=sum*(1+1);
    //    return sum;
    //}
    
    void yinzi()
    {
        for(int i=2; i<=100; i++)
        {
            int n=i;
            for(int j=2; j<=n/j; j++)
            {
                while(n%j==0)
                    a[j]++,n/=j;
            }
            if(n>1) a[n]++;
        }
    }
    
    int main()
    {
        // init();
        yinzi();
        ll ans=1;
        for(int i=2; i<=100; i++)
        {
    //      ans*=yinzi(i);
            if(a[i]) ans=ans*(a[i]+1);
        }
        cout<<ans<<endl;
        return 0;
    }
    
  • 相关阅读:
    再回首Java第九天
    再回首Java第八天
    再回首Java一周记
    再回首Java第六天
    再回首Java第五天
    再回首Java第四天
    再回首Java第三天
    再回首Java第二天
    再回首Java第一天
    关于i++和++i理解
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14664282.html
Copyright © 2011-2022 走看看