1965: [Ahoi2005]SHUFFLE 洗牌

Time Limit: 3 Sec  Memory Limit: 64 MB
Submit: 408  Solved: 240
[Submit][Status][Discuss]

Description

为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动。 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联提议用扑克牌打发长途旅行中的无聊时间。玩了几局之后,大家觉得单纯玩扑克牌对于像他们这样的高智商人才来说太简单了。有人提出了扑克牌的一种新的玩法。 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取下面一叠的第一张作为新的一叠的第一张,然后取上面一叠的第一张作为新的一叠的第二张,再取下面一叠的第二张作为新的一叠的第三张……如此交替直到所有的牌取完。 如果对一叠6张的扑克牌1 2 3 4 5 6,进行一次洗牌的过程如下图所示: 
 从图中可以看出经过一次洗牌,序列1 2 3 4 5 6变为4 1 5 2 6 3。当然,再对得到的序列进行一次洗牌,又会变为2 4 6 1 3 5。 游戏是这样的,如果给定长度为N的一叠扑克牌,并且牌面大小从1开始连续增加到N(不考虑花色),对这样的一叠扑克牌,进行M次洗牌。最先说出经过洗牌后的扑克牌序列中第L张扑克牌的牌面大小是多少的科学家得胜。小联想赢取游戏的胜利,你能帮助他吗?

Input

有三个用空格间隔的整数,分别表示N,M,L (其中0< N ≤ 10 ^ 10 ,0 ≤ M ≤ 10^ 10,且N为偶数)。

Output

单行输出指定的扑克牌的牌面大小。

Sample Input

6 2 3

Sample Output

6

HINT

 

Source

Day1

题解:其实推下不难发现,就是求一个逗比方程的解——

\( x \cdot {2}^{M} \equiv L ( \mod N+1 ) \)

然后我就看见网上一大堆孩纸开始拿扩展欧几干起来啦——但事实上个人觉得完全没有必要——显然,他们直接扩展欧几的理由是N+1不一定是质数,但事实上求逆元可不一定非得要质数才行,具体如下,上面的方程可以转化为——

\( x = L \cdot {{2}^{M}}^{\phi(N+1)-1} \)

然后没别的啦,就是注意下数据范围,\( N\leq {10}^{10} \),所以需要用到快速乘,否则会爆数据类型

 /**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ var
n,m,p,pp,l:int64;
function Eula(x:int64):int64;
var res:int64;i:longint;
begin
res:=x;
for i:= to trunc(sqrt(x)) do
begin
if (x mod i)= then
begin
res:=(res div i)*int64(i-);
while (x mod i)= do x:=x div i;
end;
end;
if x> then res:=(res div x)*(x-);
exit(res);
end;
function ksc(x,y:int64):int64;
begin
ksc:=;x:=x mod p;
while y> do
begin
if odd(y) then ksc:=(ksc+x) mod p;
x:=(x+x) mod p;y:=y shr ;
end;
end;
function ksm(x,y:int64):int64;
begin
ksm:=;x:=x mod p;
while y> do
begin
if odd(y) then ksm:=ksc(ksm,x) mod p;
x:=ksc(x,x) mod p;y:=y shr ;
end;
end;
begin
readln(n,m,l);
p:=n+;pp:=eula(p)-;
writeln(ksc(l,ksm(ksm(,m),pp)));
end.

1965: [Ahoi2005]SHUFFLE 洗牌的更多相关文章

  1. 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 ...

  2. BZOJ 1965 [Ahoi2005]SHUFFLE 洗牌:快速幂 + 逆元

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1965 题意: 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两 ...

  3. bzoj 1965: [Ahoi2005]SHUFFLE 洗牌

    #include<cstdio> #include<cstring> #include<iostream> #define ll long long using n ...

  4. 1965: [Ahoi2005]SHUFFLE 洗牌 - BZOJ

    Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...

  5. [AHOI2005] SHUFFLE 洗牌

    1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 952  Solved: 630[Submit][St ...

  6. 【bzoj1965】: [Ahoi2005]SHUFFLE 洗牌 数论-快速幂-扩展欧几里得

    [bzoj1965]: [Ahoi2005]SHUFFLE 洗牌 观察发现第x张牌 当x<=n/2 x=2x 当x>n/2 x=2x-n-1 好像就是 x=2x mod (n+1)  就好 ...

  7. 【BZOJ】【1965】SHUFFLE 洗牌

    扩展欧几里德+快速幂 每次转换位置:第x位的转移到2*x %(n+1)这个位置上 那么m次后就到了(2^m)*x %(n+1)这个位置上 那么找洗牌m次后在 l 位置上的牌就相当于解线性模方程: (2 ...

  8. bzoj1965 [Ahoi2005]SHUFFLE 洗牌

    Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...

  9. BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...

随机推荐

  1. XHTML 是以 XML 格式编写的 HTML

    什么是 XHTML? XHTML 指的是可扩展超文本标记语言 XHTML 与 HTML 4.01 几乎是相同的 XHTML 是更严格更纯净的 HTML 版本 XHTML 是以 XML 应用的方式定义的 ...

  2. Spring集合配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://ww ...

  3. 利用apache的mod_rewrite做URL规则重写

    使用mod_rewrite做url重写,伪静态,做过很多次,这次用几个例子记下来,便于后面查用. 使用方法: 1.在conf目录的httpd.conf文件中找到: LoadModule rewrite ...

  4. jmeter线程组配置

    线程组配置 线程组相当于有多个用户,同时去执行相同的一批次任务.每个线程之间都是隔离的,互不影响的.一个线程的执行过程中,操作的变量,不会影响其他线程的变量值. Delay Thread creati ...

  5. Jquery右击显示菜单事件,运用smartMenu插件。

    基本格式: 1.引用jquery.smartMenu插件.css样式: <script src="gongju/jquery-1.11.2.min.js" type=&quo ...

  6. 字体图标 轻量级 Font Awesome

    今天呢,来推荐一款请轻量级 字体图标框架.Font Awesome 用法与bootstrap相似 打开网址.download下载,然后打开取到这两个,下载点这里,这个博客弄的挺好的. 找到exampl ...

  7. Socket通信流程

    Socket通信流程 HTTP 底层就是通过socket建立连接通信管道,实现数据传输 HTTP是一个TCP的传输协议(方式),它是一个可靠,安全的协议

  8. 新手初学Redis之基础知识命令

    笔者最初接触Redis是因为了解了一些nosql方面的知识,觉得nosql是一个很有意思的方面.像其中的mongodb,redis等等.当初也没有深入的去了解Redis,直到自己前段时间在写一个web ...

  9. [No0000B7]If else 与 三元表达式? : 效率对比

    先看 if else 一段代码 using System; class Program { private static void Main() { ; ) i = -; ; Console.Writ ...

  10. Android之Activity系列总结(一)--Activity概览

    Activity 本文内容 创建 Activity 实现用户界面 在清单文件中声明 Activity 启动 Activity 启动 Activity 以获得结果 结束 Activity 管理 Acti ...