快速幂&&codeforce 678D
来源:互联网 发布:socket网络通信 编辑:程序博客网 时间:2024/05/22 11:37
#include <iostream>using namespace std;#define p 1000000007#define ll long longll f(ll a,ll n,ll m)//快速幂计算a的n次方模m(由于数字较大,通常会要求求出余数){ ll res=1; while(n) { if(n&1) res=a*res%m; a=a*a%m; n>>=1; } return res;}int main(){ ll a,b,n,x; cin>>a>>b>>n>>x; a%=p,x%=p,b%=p; if(a==1) cout<<(x+b*(n%p))%p;//等比数列求和要检查公比是否为1 else { ll m=f(a,n,p); ll c=((m+p-1)*f(a-1,p-2,p))%p;//分数m/n (mod m)=m*(n^(m-2)) (mod m) cout<<(m*x+c*b)%p; } return 0;}
这里解释一下分数m/n (mod m)=m*(n^(m-2)) (mod m):
费马小定理:a^(m-1)=1(mod m)
引理:若a*a1=1(mod m),则b/a=b*a1 (mod m) {可以用反证法}
提示:一开始可以这样拆:a^(m-1)=a*a^(m-2)
另外:快速幂用的是二分法+同余定理,会用就行,这里不多做解释
阅读全文
0 0
- 快速幂&&codeforce 678D
- codeforce 583D 矩阵快速幂
- codeforce 11D
- codeforce 161 D
- codeforce 237 C D
- codeforce 143D dp
- codeforce D. Password
- Codeforce 340D
- codeforce D. Password
- codeforce D. Password
- codeforce 492 C D
- (10D)codeforce
- Codeforce 148D
- Codeforce 567D
- codeforce 590d
- codeforce 589 D. Boulevard
- codeforce 241div2 D
- Codeforce 327D 二分
- C++继承
- hdu1350
- 点击后换按钮图片
- [LeetCode] 526. Beautiful Arrangement
- (DP,多重背包) Ahui Writes Word -- HDOJ
- 快速幂&&codeforce 678D
- Ambari部署HDP2.3
- Morley's Theorem UVA
- 周易六十四卦——泽水困卦
- 编译ROM时添加内置软件太多导致Image内存不足
- Python网络爬虫报错“SSL: CERTIFICATE_VERIFY_FAILED”的解决方案
- 链表各类操作详解
- java代码实现发送邮件
- 使用反射机制绕过泛型检查类型