博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luogu P1593 因子和
阅读量:5266 次
发布时间:2019-06-14

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

不要吐槽博主总做这些数论氵题

首先我们看到这种因数问题,果断质因数分解

所以当前数\(a=p_1^{k_1}*p_2^{k_2}...*p_m^{k_m}\)

可得\(a^b=p_1^{k_1*b}*p_2^{k_2*b}...*p_m^{k_m*b}\)

考虑因数和,假设数\(a\)只有一个质因子\(p_1\),则因数和为\(\sum_{i=0}^{k_1}{p_1}^i\)

如果有第二个质因子\(p_2\)则因数和为\(\sum_{i=0}^{k_1}({p_1}^i*\sum_{j=0}^{k_2}{p_2}^j)=(\sum_{i=0}^{k_1}{p_1}^i)*(\sum_{j=0}^{k_2}{p_2}^j)\)

以此类推,我们要求的因数之和显然\(\prod_{i=1}^m \sum_{j=0}^{k_i}{p_i}^j\)

至于后面那一段怎么求,先令\(f_i=\sum_{j=0}^{i}p^j\)

可以发现\(f_{i+1}=\sum_{j=0}^{i+1}p^j=p*(\sum_{j=0}^{i}p^j)+1=p*f_i+1\)

然后就可以偷税的使用矩乘了(如果不会请参考)

代码如下

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define il inline#define re registerusing namespace std;const LL mod=9901;il LL rd(){ re LL x=0,w=1;re char ch; while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();} while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();} return x*w;}struct mrtx{ LL a[2][2]; mrtx(){memset(a,0,sizeof(a));}}a,b;il mrtx mlt(mrtx a,mrtx b){ mrtx c; for(int i=0;i<=1;i++) for(int j=0;j<=1;j++) for(int k=0;k<=1;k++) c.a[i][j]=(c.a[i][j]+(a.a[i][k]*b.a[k][j])%mod)%mod; return c;}il mrtx ksm(mrtx a,mrtx b,LL bb) //这里直接把转移矩阵乘到初始矩阵上去{ while(bb) { if(bb&1) a=mlt(a,b); b=mlt(b,b); bb>>=1; } return a;}LL p[20][2],tt,n,m,ans=1;int main(){ n=rd(),m=rd(); int srt=sqrt(n); for(int i=2;i<=srt;i++) { if(n%i!=0) continue; p[++tt][0]=i; while(n%i==0) ++p[tt][1],n/=i; } if(n>1) p[++tt][0]=n,p[tt][1]=1; a.a[0][0]=a.a[0][1]=1,b.a[1][0]=b.a[1][1]=1; for(int i=1;i<=tt;i++) { p[i][1]*=m; b.a[0][0]=p[i][0]; ans=(ans*ksm(a,b,p[i][1]).a[0][0])%mod; } printf("%lld\n",ans); return 0;}

转载于:https://www.cnblogs.com/smyjr/p/9439189.html

你可能感兴趣的文章
【SVM】libsvm-python
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
Leetcode Balanced Binary Tree
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>