#include <stdio.h> #include <math.h> void f(int n, int s, int t) { if(n==2) { if(t==1) { if(s==1) printf("CC"); else printf("PC"); } else { if(s==1) printf("PP"); else printf("CP"); } return ; } int x=s%(n/2); if(x==0) x=n/2; if(t==1) { if(s>n*1.0/2) f(n/2, x, 0); else f(n/2, x, 1); f(n/2, x, 1); } else if(t==0){ if(s>n*1.0/2) f(n/2, x, 1); else f(n/2, x, 0); f(n/2, x, 0); } } int main() { int t, n; scanf("%d", &t); while(t--) { scanf("%d", &n); n=pow(2, n); for(int i=1; i<=n; i++) { f(n, i, 1); printf("\n"); } } return 0; }
#include<iostream> #include<math.h> using namespace std; char map[1050][1050]; void init(){ map[1][1]='C'; map[1][2]='C'; map[2][1]='P'; map[2][2]='C'; int i,j,k; for(i=2;i<=10;i++){ int left = pow(2,i-1); int right = pow(2,i); for(j=1;j<=left;j++){ for(k=left+1;k<=right;k++){ map[j][k]=map[j][k-left]; map[j+left][k]=map[j][k-left]; } for(j=left+1;j<=right;j++){ for(k=1;k<=left;k++){ map[j][k]=(map[j-left][k]=='C')?'P':'C'; } } } } return; } int main(){ int T; cin>>T; init(); while(T--){ int s,i,j; cin>>s; int len=pow(2,s); for(i=1;i<=len;i++){ for(j=1;j<=len;j++){ cout<<map[i][j]; } cout<<endl; } } return 0; }