CodeForces 610C Harmony Analysis
构造
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int a[15][1000][1000]; int main() { a[1][1][1]=1; a[1][1][2]=1; a[1][2][1]=1; a[1][2][2]=-1; int len=2; for(int i=2; i<=9; i++) { len=len*2; for(int r=1; r<=len/2; r++) for(int c=1; c<=len/2; c++) a[i][r][c]=a[i-1][r][c]; for(int r=1; r<=len/2; r++) for(int c=len/2+1; c<=len; c++) a[i][r][c]=a[i-1][r][c-len/2]; for(int r=len/2+1; r<=len; r++) for(int c=1; c<=len/2; c++) a[i][r][c]=a[i-1][r-len/2][c]; for(int r=len/2+1; r<=len; r++) for(int c=len/2+1; c<=len; c++) a[i][r][c]=-a[i-1][r-len/2][c-len/2]; } int n; while(~scanf("%d",&n)) { int len=pow(2,n); for(int i=1; i<=len; i++) { for(int j=1; j<=len; j++) { if(a[n][i][j]==1) printf("+"); else printf("*"); } printf("\n"); } } return 0; }