jzoj4229-学习神技【逆元,费马小定理】
生活随笔
收集整理的這篇文章主要介紹了
jzoj4229-学习神技【逆元,费马小定理】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
正題
題目大意
求
(∑i=1na?qi)mod(109+7)(\sum_{i=1}^na*q^i)\ mod\ (10^9+7)(i=1∑n?a?qi)?mod?(109+7)
解題思路
題目里都給出公式
∑i=1na?qi=a?(1?qn)1?q\sum_{i=1}^na*q_i=\frac{a*(1-q^n)}{1-q}i=1∑n?a?qi?=1?qa?(1?qn)?
其實就是
a?(qn?1)q?1\frac{a*(q^n-1)}{q-1}q?1a?(qn?1)?
上面那個直接快速冪
下面那個用逆元
codecodecode
#include<cstdio> #define ll long long using namespace std; const ll xjq=1e9+7; ll a,q,n,m; ll power(ll x,ll b) {ll ans=1;x%=xjq;while(b){if(b&1) ans=(ans*x)%xjq;x=(x*x)%xjq;b>>=1;}return ans; } int main() {scanf("%lld",&m);while(m--){scanf("%lld%lld%lld",&a,&q,&n);if(q==1) printf("%lld\n",a*(n%xjq)%xjq);else{ll k=power(q,n)-1;k=(k*a)%xjq;q--;ll inv=power(q,xjq-2);printf("%lld\n",k*inv%xjq);}} } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的jzoj4229-学习神技【逆元,费马小定理】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高晓攀个人资料简历 高晓攀简介
- 下一篇: 微信无法连接到服务器 你知道吗