BZOJ 1965 SHUFFLE 洗牌
来源:互联网 发布:ipad pro 生产力 知乎 编辑:程序博客网 时间:2024/06/04 23:15
题目:
为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动。 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联提议用扑克牌打发长途旅行中的无聊时间。玩了几局之后,大家觉得单纯玩扑克牌对于像他们这样的高智商人才来说太简单了。有人提出了扑克牌的一种新的玩法。 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取下面一叠的第一张作为新的一叠的第一张,然后取上面一叠的第一张作为新的一叠的第二张,再取下面一叠的第二张作为新的一叠的第三张……如此交替直到所有的牌取完。 如果对一叠6张的扑克牌1 2 3 4 5 6,进行一次洗牌的过程如下图所示:
6 2 3
6
解析:
编号为i(1<=i<=N)的牌,m次洗牌之后编号为i*2^m (mod N+1)
所以m次洗牌之后编号为L的牌,在开始洗牌之前的编号为L*t^m (mod N+1)
其中t是2的逆元,等于N/2+1
代码:
#include<iostream>using namespace std;long long N, M, L, t;long long f(long long m){if (m == 0)return 1;long long ans = f(m / 2);ans = ans*ans % (N + 1);if (m % 2)ans *= t;return ans % (N + 1);}int main(){cin >> N >> M >> L;t = N / 2 + 1;cout << f(M)*L % (N + 1) << endl;return 0;}
相关题目:HDU - 1210 Eddy's 洗牌问题
0 0
- BZOJ 1965 SHUFFLE 洗牌
- bzoj 1965: [Ahoi2005]SHUFFLE 洗牌
- BZOJ 1965 AHOI2005 SHUFFLE 洗牌 数论
- 【逆元】【bzoj 1965】: [Ahoi2005]SHUFFLE 洗牌
- [BZOJ]1965: [Ahoi2005]SHUFFLE 洗牌 扩展欧几里得
- bzoj 1965: [Ahoi2005]SHUFFLE 洗牌 (快速幂)
- BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌 快速幂 快速乘
- 1965: [Ahoi2005]SHUFFLE 洗牌
- 1965: [Ahoi2005]SHUFFLE 洗牌
- 【BZOJ】【P1965】【AHOI2005】【SHUFFLE 洗牌】【题解】【数论】
- 洗牌算法(shuffle)
- shuffle算法(洗牌算法)
- bzoj1965: [Ahoi2005]SHUFFLE 洗牌
- 洗牌算法shuffle
- 洗牌(shuffle)问题详解
- 洗牌算法shuffle
- [BZOJ1965][Ahoi2005]SHUFFLE 洗牌
- BZOJ1965: [Ahoi2005]SHUFFLE 洗牌
- (4.3.2.18)PendingItent的第二次会覆盖第一次的intent内容
- python:用setup.py安装第三方包packages
- javacscript+canvas小游戏-左右手锻炼大法。。
- 30漂亮的数字
- 简单ncurses颜色使用
- BZOJ 1965 SHUFFLE 洗牌
- 29半素数
- 2017个人规划
- 【寒江雪】密码学概述
- 【jzoj4920】【降雷皇】【动态规划】【二分答案】【数据结构】
- 手动集成各大三方库所需导入的库汇总~持续更新
- ubuntu16.04LTS 安装 broadcom网卡驱动
- 变量
- maven传递依赖规则