点此看题面

大致题意: 有一叠扑克牌编号为\(1\sim n\)(\(n\)为偶数),每次洗牌将扑克牌平均分成上下两叠,取下面一叠的第一张作为新的一叠的第一张,然后取上面一叠的第一张作为新的一叠的第二张,再取下面一叠的第二张作为新的一叠的第三张……如此交替直到所有的牌取完。问\(m\)次洗牌后第\(l\)张扑克牌的编号。

数学题

\(n,m\)这么大,比较显然是一道数学题。

设当前位置为\(x\),则不难发现,每次洗牌之后,下一次的位置为:\(2x\)%\((n+1)\)

以此类推,经过\(m\)次洗牌,这张扑克牌的位置应为\(2^mx\)%\((n+1)\)

既然这样,题目要我们求的就出一个\(x\)满足$$2^mx\equiv l(mod\text{ }n+1)$$

根据等式的性质,原式可化为$$x\equiv l·(2m){-1}(mod\text{ }n+1)$$

因此,我们只需求出\(2^m\)在模\(n+1\)意义下的乘法逆元,再乘以\(l\),就可以求出\(x\)了。

代码

#include<bits/stdc++.h>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define uint unsigned int
#define LL long long
#define ull unsigned long long
#define swap(x,y) (x^=y,y^=x,x^=y)
#define abs(x) ((x)<0?-(x):(x))
#define Fsize 100000
#define tc() (FinNow==FinEnd&&(FinEnd=(FinNow=Fin)+fread(Fin,1,Fsize,stdin),FinNow==FinEnd)?EOF:*FinNow++)
#define pc(ch) (putchar(ch))
int OutputTop=0;char Fin[Fsize],*FinNow=Fin,*FinEnd=Fin,OutputStack[Fsize];
using namespace std;
LL n,m,l;
inline void read(LL &x)
{
x=0;static char ch;
while(!isdigit(ch=tc()));
while(x=(x<<3)+(x<<1)+(ch&15),isdigit(ch=tc()));
}
inline void write(LL x)
{
if(!x) return (void)pc('0');
while(x) OutputStack[++OutputTop]=x%10+48,x/=10;
while(OutputTop) pc(OutputStack[OutputTop]),--OutputTop;
}
inline LL quick_pow(LL x,LL y,LL MOD)//快速幂
{
register LL res;
for(res=1;y;(x*=x)%=MOD,y>>=1) if(y&1) (res*=x)%=MOD;
return res;
}
inline void exgcd(LL x,LL y,LL &s1,LL &s2)//exgcd求逆元
{
if(!y) return (void)(s1=1,s2=0);
exgcd(y,x%y,s2,s1),s2-=x/y*s1;
}
inline LL Inv(LL x,LL y)//求逆元
{
register LL s1,s2;
exgcd(x,y,s1,s2);
return (s1%y+y)%y;
}
int main()
{
return read(n),read(m),read(l),write(Inv(quick_pow(2,m,n+1),n+1)*l%(n+1)),0;//求出2^m在模n+1意义下的逆元乘以l模n+1后的值
}

最新文章

  1. Jni 调试 : eclipse + Vs 联合调试
  2. JavaScript面试时候的坑洼沟洄——逗号、冒号与括号
  3. hdu5219 Repeating
  4. libevent源码分析:time-test例子
  5. ASP.NET MVC 网站开发总结(四)——校友平台开发总结
  6. Jquery——思维导图
  7. HDU 5273 Dylans loves numbers(水题)
  8. 提升PHP性能的21种方法
  9. [LeetCode] 76. Minimum Window Substring 解题思路
  10. using的用法
  11. win7 系统保留分区 BCDedit
  12. 前端面试题总结:HTML5,JS,CSS3,兼容性。
  13. 主java程序猿知识体系结构
  14. Future of Future
  15. 初识TensorFlow
  16. react native 0.50与OC交互 &amp;&amp; Swift与RN交互
  17. 2018-6-25-随笔-MVC
  18. Mac配置本地hadoop
  19. 取得&lt;asp:TextBox中的值:
  20. java的代理和动态代理简单测试

热门文章

  1. CodeForces 131D【图特性+BFS】
  2. Maven项目骨架搭建
  3. JAVA String.format()的使用
  4. 40.QT-QPropertyAnimationdong和QParallelAnimationGroup动画实现
  5. react native ios打包,即生产包
  6. IfmContextHolder(ThreadLocal)
  7. maven插件: shade, assembly
  8. 爬虫(AJEX)——豆瓣动态页面
  9. WebSocket Client连接AspNetCore SignalR Json Hub
  10. UiAutomator环境配置