Luogu P2755 洗牌问题[数论]

来源:互联网 发布:qq smtp服务器发送端口 编辑:程序博客网 时间:2024/06/05 15:35

这道题,坑太大。。。
首先,说一下思路。
对于任意位置x
那么:

 2x                (x<=n) 2(x-n)-1=2x-2n-1=2x%(2n-1)          (x>n)

自己手推一下即可得出。
那么直接套思路,得出2ansmod(2n+1)=1
注意用do-while,不能用while
do-while:

#1AC2ms/1351kB#2AC3ms/1355kB#3AC3ms/1351kB#4AC3ms/16410kB#5AC736ms/16410kB#6AC19ms/1347kB#7AC3ms/1351kB#8AC510ms/16410kB#9AC368ms/1347kB

while:

#1AC3ms/1351kB#2AC2ms/16410kB#3AC3ms/16410kB#4AC2ms/1351kB#5AC714ms/16410kB#6AC17ms/1351kB#7TLE#8AC417ms/16410kB#9AC345ms/1351kB

PS:
数据:

1550068000123443216554019858956

Code:

int _,__,___;int main(){    OPENFILE();    _=readuint();    ___=1;    do    {        __++;        if(___<=_)            ___<<=1;        else            ___=((___-_)<<1)-1;    }while(___-1);    printf("%d\n",__);    rt 0;}
0 0
原创粉丝点击