Untitled
unknown
c_cpp
3 years ago
1.2 kB
12
Indexable
//12602 - OuQ String
#include <stdio.h>
#include <string.h>
long long len[53];
char s[4] = "OuQ";
void solve(int k, long long l, long long r){
if(l > r) return;
if(k == 1){
for(int i = l; i <= r; i++){
printf("%c", s[i]);
}
return;
}
if(l == 0){
printf("O");
l = l + 1;
}
if(r > len[k-1] && l <= len[k-1]){
solve(k-1, l-1, len[k-1]-1);
l = len[k-1]+1;
}
else if(r <= len[k-1] && l < len[k-1]){
solve(k-1, l-1, r-1);
}
if(l == 1 + len[k-1]){
printf("u");
l = l + 1;
}
if(l >= 2 + len[k-1] && r < 2*len[k-1]+2){
solve(k-1, l-len[k-1]-2, r-2-len[k-1]);
}
else if(l >= 2 + len[k-1] && r >= 2*len[k-1]+2){
solve(k-1, l-len[k-1]-2, len[k-1]-1);
}
if(r == len[k]-1) printf("Q");
}
int main(){
int k;
long long l ,r;
len[1] = 3;
for(int i = 2; i <= 50; i++){
len[i] = 2*len[i-1] + 3;
}
while(scanf("%d%lld%lld", &k, &l, &r) != EOF){
solve(k,l,r);
printf("\n");
}
return 0;
}Editor is loading...