T1 题目链接

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

long long n,L,R;
long long f[1000];

void print(long long x,long long l,long long r){
    if(x==0){
        printf("0");
        return;
    }
    if(x==1){
        printf("1");
        return;
    }
    if(l>=f[x-2]) print(x-1,l-f[x-2],r-f[x-2]);
    else if(r<f[x-2]) print(x-2,l,r);
    else print(x-2,l,f[x-2]-1),print(x-1,0,r-f[x-2]);
}

int main(){
    std::cin>>n>>L>>R;
    if(n==0) {printf("0\n");return 0;}
    if(n==1) {printf("1\n");return 0;}
    f[0]=1;f[1]=1;
    int i;
    for(i=2;i<=n;i++){
        f[i]=f[i-1]+f[i-2];
        if(f[i]>R) break;
    }
    if(L==0){
        if(n%2==0){
            if(R==0) {printf("0\n");return 0;}
            else printf("01");
        }else{
            if(R==0) {printf("1\n");return 0;}
            else printf("10");
        }
        L=2;
    }if(L==1){
        if(n%2==0) printf("1");
        else printf("0");
        L=2;
    }
    print(i,L,R);
    std::cout<<std::endl;
    return 0;
}
View Code

相关文章: