zoukankan      html  css  js  c++  java
  • bzoj 1965 数学

      首先我们可以发现每张牌的对应关系,假设序号为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=1,sum=2;
        while (x) {
            if (x&1) ans=(ans*sum)%(n+1);
            sum=(sum*sum)%(n+1);
            x>>=1;
        }
        return ans;
    }
     
    void ex_gcd(LL a,LL b) {
        if (!b) {
            x=l; y=0; 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+1;
        ex_gcd(a,b);
        x=((x%b)+b)%b;
        printf("%lld
    ",x);
        return 0;
    }
  • 相关阅读:
    stm32 oled学习
    PWM输出配置步骤
    IIC通信笔记
    运算放大器原理
    stm32跑马灯实现及蜂鸣器实验
    一个字节多少位
    pyQT编写界面调用摄像头
    PAT Advanced 1151 LCA in a Binary Tree (30) [树的遍历,LCA算法]
    PAT Advanced 1143 Lowest Common Ancestor (30) [二叉查找树 LCA]
    PAT Advanced 1147 Heaps (30) [堆,树的遍历]
  • 原文地址:https://www.cnblogs.com/BLADEVIL/p/3638083.html
Copyright © 2011-2022 走看看