真真随机

· · 题解

直接吹水即可。

考虑人类智慧,如果我们拿第 2 个点和第 4 个点作为数值的存储器,把这两个数记为 a,b

RRLL 这一操作可以把 a\leftarrow a+2bRL 这一操作可以 a\leftarrow a+b,b\leftarrow 2b

用这两个操作可以作为一种新型的二进制,其除了第一位以外都可以填 12,第一位只能填 1

显然这种新二进制和正常二进制的构造方法是一模一样的,但是由于第一位只能填 1,所以如果最后要求是偶数的话需要最后再反复利用 RL

应该是有很多做法可以卡进限制里的。

#include <bits/stdc++.h>
using namespace std;

int x,p,r;
signed main(){
    scanf("%d",&x);
    if(x==0){
        printf("L");
        return 0;
    }
    if(x==1){
        printf("LR");
        return 0;
    }
    while(x%2==0) x>>=1,r++; 
    for(int i=0;i<31;i++){
        if((x>>i)&1) p=i;
    }
    x-=(1<<p)-1;
    printf("L");
    for(int i=0;i<p;i++){
        if((x>>(i+1))&1) printf("RRLL");
        printf("RL");
    }
    printf("L");
    while(r--) printf("RL");
    printf("R");
    return 0;
} 

这也是题?这也是题?这也是题?这也是题?这也是题?这也是题?这也是题?这也是题?这也是题?

小 D 发现一些比较简洁的函数生成的字符串具有某种伪随机性质,请你看看他说的是否有道理!