Untitled
unknown
plain_text
3 years ago
1.6 kB
5
Indexable
#include <stdio.h> #include <stdlib.h> #include <string.h> int k,x; long long int l,r; char sk[110]; long long int len[55]; void end(int k,int l,int r); int main(void){ 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){ //他不一定有幾次 end(k,l,r); for(int j=0;j<r-l+1;j++){ //因為怕時間太久只考慮要印出的100個 printf("%c",sk[j]); sk[j]='\0'; //有可能還要用所以清掉 } printf("\n"); x=0; } return 0; } void end(int k,int l,int r){ for(int i=l;i<=r;i++){ //看看要印出的100(內)個是那些字(以下部分圖解) if(i==0){ sk[x]='O'; x++; } if(0<i && i<len[k]/2){ if(r<len[k]/2){ end(k-1,i-1,r-1); i=r; } else{ end(k-1,i-1,len[k-1]-1); i=len[k]/2; } } if(i==(len[k]/2)){ sk[x]='u'; x++; } if(len[k]/2<i && i<len[k]-1){ if(r<len[k]-1){ end(k-1,i-len[k-1]-2,r-len[k]/2-1); i=r; } else{ end(k-1,i-len[k-1]-2,len[k-1]-1); i=len[k]-2; } } if(i==len[k]-1){ sk[x]='Q'; x++; } } }
Editor is loading...