• poj 1845(等比数列前n项和及高速幂)


    Sumdiv
    Time Limit: 1000MS   Memory Limit: 30000K
    Total Submissions: 13959   Accepted: 3433

    Description

    Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S modulo 9901 (the rest of the division of S by 9901).

    Input

    The only line contains the two natural numbers A and B, (0 <= A,B <= 50000000)separated by blanks.

    Output

    The only line of the output will contain S modulo 9901.

    Sample Input

    2 3

    Sample Output

    15

    Hint

    2^3 = 8. 
    The natural divisors of 8 are: 1,2,4,8. Their sum is 15. 
    15 modulo 9901 is 15 (that should be output). 

    Source

    Romania OI 2002

    思路看:

    http://hi.baidu.com/necsinmyway/item/9f10b6d96c5068fbb2f77740

    AC代码:

    #include<iostream>
    using namespace std;
    #define LL long long
    LL pow_mod(LL a,LL n,int mod){         //高速幂
        LL r=1;
        LL base=a;
        while(n){
            if(n&1)
                r=r*base%mod;
            base=base*base%mod;
            n>>=1;
        }
        return r%9901;
    }
    LL sum(LL a,LL b,LL mod){             //二分求等比数列前N项和
        if(b==0)
            return 1;
        if(b%2==1)
            return (sum(a,b/2,mod)*(pow_mod(a,b/2+1,mod)+1))%mod;
        else
            return (sum(a,b-1,mod)+pow_mod(a,b,mod))%mod;
    }
    int main(){
        LL a,b;
        LL ans;
        while(cin>>a>>b){
            ans=1;
            for(LL i=2;i*i<=a;i++){           //将a分解为质数的乘积
                if(a%i==0){
                    LL s=0;
                    while(a%i==0){
                        s++;
                        a/=i;
                    }
                    ans=ans*sum(i%9901,b*s,9901)%9901;
                }
            }
            if(a>=2){
                ans=ans*sum(a%9901,b,9901)%9901;
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    



  • 相关阅读:
    NXOpen测最最近距离和投影距离
    abp学习日志三(实体&聚合根)
    abp学习日志二(DDD)
    abp学习日记一(安装)
    abp学习日记 初记
    kubernetes学习——minikube入门
    windows10安装Kubernetes和MiniKube
    windows10安装docker desktop(非VMBox)
    Asp.netCore3.0 Docker 阿里云 部署 Demo
    小宝与老财
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5374210.html
Copyright © 2020-2023  润新知