首先我们可以发现每张牌的对应关系,假设序号为x的牌,经过一次洗牌后的位置为:

    2*x     x<=n/2

    2*(x-n/2)-1 x>n/2

  那么我们可以将下面的式子化简,变成2*x-n-1,其实这个就是2*x%(n+1),那么经过m次变换,x的位置为2^m*x%(n+1),设最后的答案为x,那么我们可以列出式子

    2^m*x%(n+1)=l,拓展欧几里得做就行了。

/**************************************************************
    Problem: 1965
    User: BLADEVIL
    Language: C++
    Result: Accepted
    Time:0 ms
    Memory:804 kb
****************************************************************/
 
//By BLADEVIL
#include <cstdio>
#define LL long long
 
using namespace std;
 
LL n,m,l;
LL x,y;
 
LL mi(LL x) {
    LL ans=,sum=;
    while (x) {
        if (x&) ans=(ans*sum)%(n+);
        sum=(sum*sum)%(n+);
        x>>=;
    }
    return ans;
}
 
void ex_gcd(LL a,LL b) {
    if (!b) {
        x=l; y=; return;
    }
    ex_gcd(b,a%b);
    LL z=x;
    x=y;
    y=z-(a/b)*y;
}
 
int main() {   
    scanf("%lld %lld %lld",&n,&m,&l);
    LL a=mi(m),b=n+;
    ex_gcd(a,b);
    x=((x%b)+b)%b;
    printf("%lld\n",x);
    return ;
}

bzoj 1965 数学的更多相关文章

  1. bzoj 5334 数学计算

    bzoj 5334 数学计算 开始想直接模拟过程做,但模数 \(M\) 不一定为质数,若没有逆元就 \(fAKe\) 掉了. 注意到操作 \(2\) 是删除对应的操作 \(1\) ,相当于只有 \(1 ...

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

  3. BZOJ 4173: 数学

    4173: 数学 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 462  Solved: 227[Submit][Status][Discuss] D ...

  4. BZOJ 5334--[Tjoi2018]数学计算(线段树)

    5334: [Tjoi2018]数学计算 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 220  Solved: 147[Submit][Status ...

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

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

  6. BZOJ 3157 &数学乱搞...

    挖一发坑...一碰到数学题头晕眼花...看着证明感觉我幼儿园还没毕业... http://www.cnblogs.com/zhuohan123/p/3726933.html 等我会完完整整地写一发la ...

  7. bzoj 1965: [Ahoi2005]SHUFFLE 洗牌

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

  8. bzoj 3142 数学

    找规律后可以之后答案就是 k^(m-1)*(n-(m-1)*k)+(m+(m-1)*k+1)*k^(m-1) div 2 /************************************** ...

  9. bzoj 3293 数学整理

    和1045一模一样,找到这道题的时候还愣了下神,最后发现样例都是 一样的,直接粘了1045的代码,具体题解看 http://www.cnblogs.com/BLADEVIL/p/3468729.htm ...

随机推荐

  1. Qt-排序

    1.要求传入起始指针,总长度,单元素空间占用大小(sizeof(A[i])),判断函数. 判断函数参数类型为const void *,使用需要在函数内自行转换为对应类型, 返回值为整数型,升序排序时正 ...

  2. PHP实现大文件分割上传与分片上传

    转载:http://www.zixuephp.com/phpstudy/phpshilie/20170829_43029.html 服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关 u ...

  3. cacti 安装perl 和XML::Simple

    一.安装perl #tar zxvf perl-5.20.1.tar.gz #cd perl-5.20.1  #./Configure -de  #make  #make test  #make in ...

  4. linux 安装 bitnamid-redmine

    Unix 和 Linux 安装 Perl Unix/Linux 系统上 Perl 安装步骤如下: 通过浏览器打开 http://www.perl.org/get.html. 下载适用于 Unix/Li ...

  5. 【bzoj1369】[Baltic2003]Gem 树形dp

    题目描述 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小. 输入 先给出一个数字N,代表树上有N ...

  6. AngularJS注入依赖路由总结

    属性 描述 $dirty  表单有填写记录 $valid 字段内容是合法的 $invalid 字段内容是非法的 $pristine 表单没有填写记录 什么事依赖注入? 依赖注入是一种软件设计模式,在这 ...

  7. Python 源码剖析(一)【python对象】

    处于研究python内存释放问题,在阅读部分python源码,顺便记录下所得.(基于<python源码剖析>(v2.4.1)与 python源码(v2.7.6)) 先列下总结:      ...

  8. wmware的vmnet0、vmnet1、vmnet8

    用vmware安装虚拟机后会出现三种网卡: 1.vmnet0:桥接网卡,虚拟机相当于一台实体机,可以自用访问与被访问及上网. 在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机, ...

  9. [洛谷P4092][HEOI2016/TJOI2016]树

    题目大意:给你一棵树,有两个操作: $C\;x:$给第$x$个节点打上标记 $Q\;x:$询问第$x$个节点的祖先中最近的打过标记的点(自己也是自己的祖先) 题解:树剖,可以维护区间或,然后若一段区间 ...

  10. BZOJ1293:[SCOI2009]生日礼物——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1293 https://www.luogu.org/problemnew/show/P2564#sub ...