bzoj 1965[Ahoi2005]SHUFFLE 快速乘+快速幂

来源:互联网 发布:淘宝无线端分类链接 编辑:程序博客网 时间:2024/06/03 16:57

一开始以为是找循环节 晕 一 一+
x2ml(modn+1)
xl(n/2+1)m

Code:

#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i--)using namespace std;typedef long long ll;ll n,m,l,ans;ll mul(ll a,ll b,ll p){    ll ans=0;    for(ll i=b;i;i>>=1,a=(a+a)%p)        if(i&1)ans=(ans+a)%p;    return ans;}ll qpow(ll a,ll b,ll p){    ll ans=1;    for(ll i=b;i;i>>=1,a=mul(a,a,p))        if(i&1)ans=mul(ans,a,p);    return ans;}int main(){    scanf("%lld%lld%lld",&n,&m,&l);    ans=l%(n+1);    printf("%lld\n",mul(ans,qpow((n/2)+1,m,n+1),n+1));}
原创粉丝点击