Untitled
unknown
c_cpp
2 years ago
1.2 kB
7
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...