我一开始理解的意思:第L张扑克牌的牌面大小是多少


这是题目要我们求得,然后我看成了原序列中第L张扑克牌的位置...然后兴冲冲地找到了规律,比较有趣: $pos \equiv (L*2^m) mod (n+1)$,具体怎么证我不会,可惜数竞大佬都去集训了,现在也没办法。 然后按这个规律交了一发只有10分,才发现看错题了。我们要求的是m次洗牌后第L张扑克牌的牌面大小,然而刚刚我们已经发现了$pos \equiv (L*2^m) \pmod {n+1}$ 于是我们设位于L位,即现在位置(pos)在L上的牌在原序列第x张,根据上面规律:$(x*2^m) \equiv L \pmod {n+1}$ 所以 $x \equiv L*{2^m}^{-1} \pmod {n+1} $,求出$2^m$在模$(n+1)$意义下的逆元即可。 - 其他: 这里不用$(n+1)$不一定是质数,所以最好不要用费马小定理求,否则你只有40分,然后我们就只能用拓欧了 同时我发现当m满足$2^m \equiv 1 \pmod {n+1}$时,恰好变成最开始的序列,然而我还是不会证明 - 代码:

include

include

include

include

include

include

define ll long long

using namespace std;

ll quick_pow(int a,int b,int c)//a^b%c

{

if(b0)return 1;

ll x=quick_pow(a,b>>1,c);

x=xx%c;

if(b&1)x=x
a%c;

return x;

}

void ex_gcd(ll a, ll b, ll &x, ll &y, ll &d){

if (!b) {d=a,x=1,y=0;}

else{

ex_gcd(b,a%b,y,x,d);

y=y-x*(a/b);

}

return ;

}

ll inv(ll t, ll p){

ll d,x,y;

ex_gcd(t,p,x,y,d);

return (x%p+p)%p;

}

int main(){

ll n,m,l;

cin>>n>>m>>l;

ll p=quick_pow(2,m,n+1);

if(p%(n+1)1){

printf("%lld",l);

}

else{

printf("%lld\n",(l*inv(p,n+1))%(n+1));

}

return 0;

}

题解luoguP2054 BZOJ1965【[AHOI2005]洗牌】的更多相关文章

  1. [BZOJ1965][AHOI2005] 洗牌 - 扩展欧几里得

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

  2. bzoj1965 [Ahoi2005]洗牌

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

  3. 【BZOJ1965】[AHOI2005]洗牌(数论)

    [BZOJ1965][AHOI2005]洗牌(数论) 题面 BZOJ 洛谷 题解 考虑反过来做这个洗牌的操作,假定当前牌是第\(l\)张. 因为之前洗的时候考虑了前一半和后一半,所以根据\(l\)的奇 ...

  4. [luogu P2054] [AHOI2005]洗牌

    [luogu P2054] [AHOI2005]洗牌 题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学 ...

  5. P2054 [AHOI2005]洗牌

    P2054 [AHOI2005]洗牌 题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度 ...

  6. 洛谷——P2054 [AHOI2005]洗牌(扩展欧几里得,逆元)

    P2054 [AHOI2005]洗牌 扩展欧拉定理求逆元 $1 2 3 4 5 6$$4 1 5 2 6 3$$2 4 6 1 3 5$$1 2 3 4 5 6$ 手推一下样例,你就会发现是有规律的: ...

  7. 洛谷P2054 [AHOI2005]洗牌(扩展欧几里德)

    洛谷题目传送门 来个正常的有证明的题解 我们不好来表示某时刻某一个位置是哪一张牌,但我们可以表示某时刻某一张牌在哪个位置. 设数列\(\{a_{i_j}\}\)表示\(i\)号牌经过\(j\)次洗牌后 ...

  8. BZOJ 1965 [AHOI2005]洗牌

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

  9. [AHOI2005]洗牌

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

随机推荐

  1. windows服务器安装nodejs实现自动计划

    直接官网打开:https://nodejs.org/en/ 下载相应的系统nodejs版本直接安装后,通过命令行window+r    输入node + web(目录)+\pubils\app.js  ...

  2. antd源码分析之——标签页(tabs 1.组件结构)

    由于ant Tabs组件结构较复杂,共分三部分叙述,本文为目录中第一部分(高亮) 目录 一.组件结构 antd代码结构 rc-ant代码结构 1.组件树状结构 2.Context使用说明 3.rc-t ...

  3. ThinkPHP空操作与命名空间

    命名空间:相当于一个虚拟的目录 正常管理文件使用文件夹--物理区分 TP框架的初始命名空间是:ThinkPHP\Library 在TP框架下命名空间里面使用\代表的是初始命名空间(ThinkPHP\L ...

  4. mkvirtualenv管理python版本

    centos7安装pip 安装pip yum -y install epel-release yum -y install python2-pip 安装virtualenvwrapper pip in ...

  5. 为什么单个TCP连接很难占满带宽

    计算 TCP吞吐量的公式 TCP窗口大小(bits) / 延迟(秒) = 每秒吞吐量(bits) 比如说windows系统一般的窗口大小为64K, 中国到美国的网络延迟为150ms. 64KB = 6 ...

  6. 架构模式:API组合

    架构模式: API组合 上下文 您已应用微服务架构模式和每服务数据库模式.因此,实现从多个服务连接数据的查询不再是直截了当的. 问题 如何在微服务架构中实现查询? 结论 通过定义API Compose ...

  7. 【VS开发】CSplitterWnd的定制使用

    一.基本的CSplitterWnd的使用 1. 在CMainFrame中添加一个CSplitterWnd成员: CSplitterWnd m_splitterwnd1; 2. 基于CView创建两个新 ...

  8. 调用存储在session属性里的东西

    将对象放在session里面 request.getSession().setAttribute("username", username); //放到会话里 永EL表达式调用 $ ...

  9. eval 命令

    eval命令用于重新运算求出参数的内容. eval可读取一连串的参数,然后再依参数本身的特性来执行. 语法: eval [参数]示例:eval echo 123

  10. paper:Exploiting Query Reformulations for Web Search Result Diversification

    一. 使用查询重构来用于网页搜索结果多样性 paper本文贡献: 1. 提出了一个概率框架,这个框架显式地建模了模糊查询的信息需求---利用子查询, 2. 分析了子查询的有效性---从由三个搜索引擎提 ...