BZOJ1965: [Ahoi2005]SHUFFLE 洗牌
来源:互联网 发布:华科软件学院 编辑:程序博客网 时间:2024/05/21 09:01
Portal
由样例可以得到
可以得出一次洗牌后
那么经过
最后也就是求不定方程
快速幂+快速乘(
【代码】
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <map>#define N 10000005#define INF 0x7fffffffusing namespace std;typedef long long ll;typedef pair<int,int> pa;ll read(){ ll x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}ll n,m,L,X,Y;ll Qpow(ll x,ll y){ ll rtn=1; while(y) { if(y&1) rtn=rtn*x%n; x=x*x%n;y>>=1; } return rtn;}ll Qmul(ll x,ll y){ ll rtn=0; while(y) { if(y&1) rtn=(rtn+x)%n; x=(x<<1)%n;y>>=1; } return rtn;}ll exgcd(ll a,ll b,ll &x,ll &y){ ll rtn=a; if(b) { rtn=exgcd(b,a%b,y,x); y-=(a/b)*x; } else x=1,y=0; return rtn;}int main(){ n=read()+1,m=read(),L=read(); ll Gcd=exgcd(Qpow(2,m),n,X,Y); X=Qmul(X,L); while(X<=0) X+=n/Gcd; printf("%lld\n",X); return 0;}
0 0
- bzoj1965: [Ahoi2005]SHUFFLE 洗牌
- [BZOJ1965][Ahoi2005]SHUFFLE 洗牌
- BZOJ1965: [Ahoi2005]SHUFFLE 洗牌
- bzoj1965 [Ahoi2005]SHUFFLE 洗牌
- bzoj1965: [Ahoi2005]SHUFFLE 洗牌
- BZOJ1965 [Ahoi2005]SHUFFLE 洗牌
- 【bzoj1965】【Ahoi2005】【SHUFFLE 洗牌】【快速幂】
- [BZOJ1965][Ahoi2005]SHUFFLE 洗牌(数学相关)
- [BZOJ1965][Ahoi2005]SHUFFLE 洗牌 数学公式+乘法逆元
- 【bzoj1965】【AHOI2005】洗牌
- 1965: [Ahoi2005]SHUFFLE 洗牌
- 1965: [Ahoi2005]SHUFFLE 洗牌
- bzoj 1965: [Ahoi2005]SHUFFLE 洗牌
- 【BZOJ】【P1965】【AHOI2005】【SHUFFLE 洗牌】【题解】【数论】
- BZOJ 1965 AHOI2005 SHUFFLE 洗牌 数论
- 【逆元】【bzoj 1965】: [Ahoi2005]SHUFFLE 洗牌
- [BZOJ]1965: [Ahoi2005]SHUFFLE 洗牌 扩展欧几里得
- BZOJ1965 洗牌
- iOS判断身份证号码是否正确
- word交叉引用格式改为上标
- pktgen使用总结
- Python TK 实现ping (二)
- 541. Reverse String II
- BZOJ1965: [Ahoi2005]SHUFFLE 洗牌
- Excel常用电子表格公式大全1-2
- 1121. Damn Single 解析
- [TCP/IP]常见的HTTP状态码
- JavaScript打印金字塔
- 不容易系列1
- 在 Fragment 中使用 React Native
- 6 guilty pleasures that are costing you
- RabbitMQ学习之基础概念介绍