[BZOJ1965][Ahoi2005]SHUFFLE 洗牌 数学公式+乘法逆元
来源:互联网 发布:mongodb 删除数据库 编辑:程序博客网 时间:2024/05/20 07:53
天呐太弱啦
首先我们很容易就能得到一个公式
若i为偶数,
否则,
观察可得,i在下一轮洗牌的位置可以表示为
设答案为x,则有方程
求逆元后移项求解x即可
#include <iostream>#include <cstdio>using namespace std;typedef long long LL;LL n,m,l;LL ex_gcd(LL a,LL &x,LL b,LL &y) { if (!b) {x=1;y=0;return 1;} LL p = ex_gcd(b,y,a%b,x); y-=a/b*x; if (y<0) y+=n+1; return p; }LL qp(LL a,LL b) { LL r = 1; while (b) { if (b&1) r = (r*a) % (n+1); a=a*a%(n+1); b>>=1; } return r;}int main(){ cin >> n >> m >> l; LL e,y; ex_gcd(2,e,n+1,y); LL ans = (l*qp(e,m)) % (n+1); cout << ans << endl; 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 洗牌(数学相关)
- 【逆元】【bzoj 1965】: [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 洗牌 扩展欧几里得
- BZOJ1965 洗牌
- Android组件复习之基本组件07—Spinner
- [NOIP2016普及] 买铅笔
- Ngnix 常用命令总结
- 运行java SWT例子
- FragmentTabHost添加Fragment后获取Fragment对象
- [BZOJ1965][Ahoi2005]SHUFFLE 洗牌 数学公式+乘法逆元
- leetcode 434.Number of Segments in a String(easy)[分割字符串]
- SeekBar和RatingBar
- int 类型究竟多少字节?
- 自定义超简单、帅气可滑动删除的ListView
- 项目 1 - 验证算法之(6)堆排序
- Android组件09—悬浮框PopupWindow
- 39. Combination Sum
- Node中的Connect