博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1845 Sumdiv (等比求和+逆元)
阅读量:4315 次
发布时间:2019-06-06

本文共 1697 字,大约阅读时间需要 5 分钟。

题目链接:

题目大意:给出两个自然数a,b,求a^b的所有自然数因子的和模上9901 (0 <= a,b <= 50000000)

解题思路:我们先利用唯一分解定理,将a分解成(p1^q1)*(p2^q2)……(pk^qk)的形式,则a^b=((p1^q1)*(p2^q2)……(pk^qk))^b=(p1^q1b)*(p2^q2b)……(pk^qkb)

a^b的因子和就会等于(1+p1+p1^2+……p1^q1b)*(1+p2+p2^2+……p2^q2b)*……(1+pk+pk^2+……pk^qkb)

然后我们可以用等差求和公式转化为((p1^(q1b+1)-1)/(p1-1))*((p2^(q2b+1)-1)/(p2-1))……((pk^(qkb+1)-1)/(pk-1))

对于求逆元:

(a/b)%mod=(a%(mod*b))/b%mod。对B*mod取余,剩余的值必定是B的倍数,这种方法是用于mod和B小的时候,用在这题就刚好了。

#include
using namespace std;typedef long long ll;const int MAXN=500005;const int mod=9901;ll a,b,prime[MAXN],tot;void getPrime(int N){ //筛素数 for(int i=1;i<=N;i++) prime[i]=1; for(int i=2;i<=N;i++){ if(prime[i]) prime[tot++]=i; for(int j=0;j
<=N;j++){ prime[i*prime[j]]=0; if(i%prime[j]==0)break; } }}ll qmul(ll a,ll b,ll m){ ll res=0; while(b){ if(b&1) res=(res+a)%m; b>>=1; a=(a+a)%m; } return res;}ll qpow(ll a,ll b,ll m){ ll res=1; while(b){ if(b&1) res=qmul(res,a,m); //直接相乘会爆,可以一个一个加 a=qmul(a,a,m); b>>=1; } return res;}ll solve(ll x,ll y){ ll ans=1; for(int i=0;prime[i]*prime[i]<=x;i++){ if(x%prime[i]==0){ int cnt=0; while(x%prime[i]==0){ cnt++; x/=prime[i]; } ll M=(prime[i]-1)*mod; ans=ans*(qpow(prime[i],cnt*y+1,M)-1+M)%M/(prime[i]-1)%mod; } } if(x>1){ ll M=(x-1)*mod; ans=ans*(qpow(x,y+1,M)-1+M)%M/(x-1)%mod; } return ans;}int main(){ cin>>a>>b; getPrime(500000); cout<
<

 

转载于:https://www.cnblogs.com/zjl192628928/p/10816112.html

你可能感兴趣的文章
POJ---2945 Find the Clones[字典树-简单题(多例输入注意删除)]
查看>>
[Luogu4550] 收集邮票
查看>>
Python-循环
查看>>
(转)最大子序列和问题 看着貌似不错
查看>>
thinkphp3.2 链接数据库测试
查看>>
项目的上线流程是怎样的?
查看>>
Linux通配符
查看>>
ES6 Iterator
查看>>
Apache2.4开启GZIP功能
查看>>
远程桌面关闭重启电脑的方法
查看>>
第三章 熟悉常用的HDFS操作
查看>>
filter:expression(document.execCommand("BackgroundImageCache",false,true) 转
查看>>
Java - 30 Java 网络编程
查看>>
shiro中的filterChainDefinitions
查看>>
瑞柏匡丞教你如何和程序员一起愉快的玩耍
查看>>
【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)
查看>>
【模拟】NEERC15 E Easy Problemset (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
查看>>
JavaBean and PreparedStatement Usage
查看>>
经典冒泡排序
查看>>
HDU1312:Red and Black(DFS)
查看>>