囧
囧 | ||||||
|
||||||
Description | ||||||
DS最近很囧,总是不能把妹子哄开心。所以,邪恶的他也想让你们囧一囧。 他给你一个数字 n 让你输出囧字的迭代(详见样例)。 |
||||||
Input | ||||||
第一行一个整数,代表数据的组数。 每组数据一个整数 n(1≤n≤7) |
||||||
Output | ||||||
每组数据输出一个囧字的图形. |
||||||
Sample Input | ||||||
2 1 2 |
||||||
Sample Output | ||||||
+------+ | | | / \ | | | | +--+ | | | | | | | | | +-+--+-+ +--------------+ | | | / \ | | / \ | | / \ | | / \ | | / \ | | | | +------+ | | | | | | | / \ | | | | | | | | +--+ | | | | | | | | | | | | | | +---+-+--+-+---+ |
||||||
Hint | ||||||
再友情给个n = 3 的样例,请注意囧字的迭代方式。+------------------------------+ | | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | / \ | | | | +--------------+ | | | | | | | / \ | | | | / \ | | | | / \ | | | | / \ | | | | / \ | | | | | | | | +------+ | | | | | | | | | | | / \ | | | | | | | | | | | | +--+ | | | | | | | | | | | | | | | | | | | +-------+---+-+--+-+---+-------+ |
||||||
Source | ||||||
哈尔滨理工大学第四届ACM程序设计竞赛(同步赛) |
1 #include <iostream> 2 #include <string.h> 3 #include <stdio.h> 4 #include <math.h> 5 using namespace std; 6 7 const int maxn=1000; 8 char a[maxn][maxn]; 9 10 void get_zheng(int x0,int y0,long long int len) 11 { 12 a[x0][y0]=a[x0+len-1][y0]=a[x0][y0+len-1]=a[x0+len-1][y0+len-1]='+'; 13 for(int i=x0+1;i<=x0+len-2;i++) 14 a[i][y0]=a[i][y0+len-1]='|'; 15 for(int j=y0+1;j<=y0+len-2;j++) 16 a[x0][j]=a[x0+len-1][j]='-'; 17 int k=y0+len/2-2; 18 int l=y0+len/2+1; 19 for(int i=x0+2;i<=x0+len/2-2;i++) 20 { 21 a[i][k--]='/'; 22 a[i][l++]='\\'; 23 } 24 } 25 26 void solve(int n) 27 { 28 long long int len=8*(1<<(n-1)); 29 int x0=0; 30 int y0=0; 31 while(len>=4) 32 { 33 get_zheng(x0,y0,len); 34 x0+=len/2; 35 y0+=len/4; 36 len/=2; 37 } 38 } 39 40 int main() 41 { 42 int t; 43 scanf("%d",&t); 44 while(t--){ 45 int n; 46 scanf("%d",&n); 47 long long int len=8*pow(2.0,n-1); 48 memset(a,' ',sizeof(a)); 49 solve(n); 50 for(int i=0;i<len;i++) 51 { 52 for(int j=0;j<len;j++) 53 { 54 printf("%c",a[i][j]); 55 } 56 printf("\n"); 57 } 58 } 59 return 0; 60 }