【bzoj1965】[Ahoi2005]SHUFFLE 洗牌
x*2^m==l (mod n+1)
x=(n/2+1)^m*l mod n+1
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
typedef long long LL;
#define MOD (LL)(n+1LL)
int n,m,l;
LL qpow(LL a,LL b)
{
LL m=a,s=1LL;
while (b)
{
if (b & 1)
s=(s*m)%(n+1);
m=(m*m)%(n+1);
b>>=1;
}
return s;
}
int main()
{
scanf("%d%d%d",&n,&m,&l);
printf("%lld",(qpow((LL)n/2+1,m)*l)%(n+1));
return 0;
}
#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;typedef long long LL;#define MOD (LL)(n+1LL)int n,m,l;LL qpow(LL a,LL b){ LL m=a,s=1LL; while (b) { if (b & 1) s=(s*m)%(n+1); m=(m*m)%(n+1); b>>=1; } return s;}int main(){ scanf("%d%d%d",&n,&m,&l); printf("%lld",(qpow((LL)n/2+1,m)*l)%(n+1)); return 0;}

浙公网安备 33010602011771号