【BZOJ1956】[Ahoi2005]SHUFFLE 洗牌
题目描述:
这道题,我们首先一眼瞪出来一个规律:对于一个位置为i的牌,在1次洗牌后,他的位置处于(i*2)%(n+1) 的位置
那么,显然的,对于M次洗牌 我们只需要求出2的m次方,这个我们采用快速幂。
那么 我们的主要目的,就是找到一个X 使
成立
那么 我们就需要用到2^m的逆元,这个n+1不一定是素数,有点不太好搞啊……
不过没关系!我们看到,这个数字的底数为2 而n+1一定为奇数·(n为偶数) 下面请记住一个结论
对于一个奇数n ,2在膜n意义下的逆元是(n-1)/2+1 这个很好证明,把它乘2就是n+1 膜n意义下为1 符合逆元的定义
于是这道题就变得简单起来了:求n/2+1的m次方(mod n+1) 把它与l相乘,得到的就是x了!
上代码:
#include<cstdio>
#include<cstring>
typedef unsigned long long ull;
ull n,m,l;
ull qpow(ull a,ull m) {
ull base = a,ans=;
while(m) {
#ifdef DEBUG
printf("%llu %llu",ans,base);
#endif
if(m&) (ans*=base)%=n+;
(base*=base)%=n+;m>>=;
}
return ans;
}
ull after(ull n,ull p) {
return n*p%(n+);
}
ull inv(ull p) {
return qpow(p,n-);
}
int main() {
scanf("%llu%llu%llu",&n,&m,&l);
ull p = qpow((n/)+,m);
#ifdef DEBUG
printf("%llu\n",p);
#endif
printf("%llu",l*p%(n+));
return ;
}
【BZOJ1956】[Ahoi2005]SHUFFLE 洗牌的更多相关文章
- BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌( 数论 )
对于第x个数, 下一轮它会到位置p. 当x<=N/2, p = x*2 当x>N/2, p = x*2%(N+1) 所以p = x*2%(N+1) 设一开始的位置为t, 那么t*2M%(N ...
- 1965: [Ahoi2005]SHUFFLE 洗牌
1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 408 Solved: 240[Submit][St ...
- 【bzoj1965】: [Ahoi2005]SHUFFLE 洗牌 数论-快速幂-扩展欧几里得
[bzoj1965]: [Ahoi2005]SHUFFLE 洗牌 观察发现第x张牌 当x<=n/2 x=2x 当x>n/2 x=2x-n-1 好像就是 x=2x mod (n+1) 就好 ...
- [AHOI2005] SHUFFLE 洗牌
1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 952 Solved: 630[Submit][St ...
- bzoj 1965: [Ahoi2005]SHUFFLE 洗牌
#include<cstdio> #include<cstring> #include<iostream> #define ll long long using n ...
- 1965: [Ahoi2005]SHUFFLE 洗牌 - BZOJ
Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...
- bzoj1965 [Ahoi2005]SHUFFLE 洗牌
Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...
- BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...
- 2018.11.07 bzoj1965: [Ahoi2005]SHUFFLE 洗牌(快速幂+exgcd)
传送门 发现自己的程序跑得好慢啊233. 管他的反正AC了 先手玩样例找了一波规律发现题目要求的就是a∗2m≡l(modn+1)a*2^m\equiv l \pmod {n+1}a∗2m≡l(modn ...
随机推荐
- 为阿里云ECS服务器二级域名绑定tomcat子目录,实现一个IP多个二级域名
摘要:前几天租了阿里云ECS服务器,选择的Windows系统,并在服务器上部署了tomcat服务器,随后我又买了一个域名,可一个域名只能指向一个IP地址,包括二级域名也只能指向一个IP地址,并不能指向 ...
- 单独运行shell脚本与crontab运行shell脚本的区别
crontab运行脚本存在两大问题:环境变量和路径,从而导致单独运行脚本没问题,但用crontab运行就报错. 1.环境变量 描述问题:crontab: usage error: no argumen ...
- Mybatis多表查询(一对一、一对多、多对多)
Mybatis的多表级联查询 . 一对一可以通过<association>实现,一对多和多对多通过<collection>实现. <discriminator> 元 ...
- Python dict() 函数
Python dict() 函数 Python 内置函数 描述 dict() 函数用于创建一个字典. 语法 dict 语法: class dict(**kwarg) class dict(mappi ...
- Borg Maze(BFS+MST)
Borg Maze http://poj.org/problem?id=3026 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- animate.css动画种类
animate.css 一个非常好用的css动画库 Github地址 包括了一下多种动画 1. bounce 弹跳 2. flash 闪烁 3. pulse 放大,缩小 4. rubberBand 放 ...
- 两个链表的交叉 · Intersection of Two Linked Lists
[抄题]: Write a program to find the node at which the intersection of two singly linked lists begins. ...
- Linq操作DataTable
IEnumerable<DataRow> q = from dr in dt.AsEnumerable() where dr.Field& ...
- 初次使用Xcode遇到的问题及解决方法
使用的是Xcode 5.1.1 版本 1.调整字体 点击左上角的Xcode->Preference->Font & colors .需要注意到是,只有选择下图中黑色框框里面的一行 ...
- ubuntu登陆无限循环
现象:在Ubuntu登陆界面输入密码之后,黑屏一闪并且出现了check battery state之类的文字之后,又跳转到登录界面. 原因:主目录下的.Xauthority文件拥有者变成了root,从 ...