ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Loj 10211 sumdiv

2019-03-16 13:45:22  阅读:250  来源: 互联网

标签:pr Loj sumdiv long a1 10211 ans include mod


题目描述

求 A^B 的所有约数之和 mod 9901。

首先,我们要求出A的约数之和。

就是把A分解质因数,成为:a1^k1*a2^k2*a3^k2....

然后约数和就是(a1^0+a1^1+a1^2+....)*(a2^0+a2^1+....)*.......

那么A的B次方就是每一位都乘以一个B

然后对于每一个ai,都是一个等比数列求和。

然后求和公式需要用到除法,需要逆元。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <queue>
#define in(a) a=read()
#define MAXN 100010
#define REP(i,k,n)  for(long long i=k;i<=n;i++)
using namespace std;
inline long long read(){
    long long x=0,f=1;
    char ch=getchar();
    for(;!isdigit(ch);ch=getchar())
        if(ch=='-')
            f=-1;
    for(;isdigit(ch);ch=getchar())
        x=x*10+ch-'0';
    return x*f;
}
long long pr[100010],ti[10010];
long long ind=0;
long long mod=9901;
inline void divide(long long n){
    for(long long i=2;i*i<=n;i++)
        if(n%i==0){
            pr[++ind]=i;
            while(n%i==0){
                n=n/i;
                ti[ind]++;
            }
        }
    if(n>1){
        pr[++ind]=n;
        ti[ind]=1;
    }
    return ;
}
inline long long qpow(long long a,long long b){
    long long ans=1;
    while(b){
        if(b%2)  ans=(ans*a)%mod;
        b/=2;
        a=(a*a)%mod;
    }
    return ans;
}
int main(){
    long long a,b;
    long long ans=1;
    in(a),in(b);
    divide(a);
    REP(i,1,ind){
        if(pr[i]-1%mod==0)
            ans=ans*(ti[i]*b)%mod;
        long long den,dor;
        den=qpow(pr[i],b*ti[i]+1)-1;
        dor=qpow(pr[i]-1,mod-2);
        ans=(ans*(den*dor)%mod)%mod;
    }
    cout<<ans;
    return 0;
}

 

标签:pr,Loj,sumdiv,long,a1,10211,ans,include,mod
来源: https://www.cnblogs.com/jason2003/p/10541973.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有