【文字列】【シミュレーション】美しい三角断面


タイトル:
XさんはCさんとの関係をよくするために、わざわざ優美な画像を探してプレゼントしました.これは無限の三角形からなる極めて優美な図形で、Xさんはこれらの極めて美感に富んだ図形を実現したいと思っていますが、初戦を過ぎたことのない偽引退選手として、彼のレベルは限られていて、そこでこの困難な任務はあなたたちに落ちました.親切な出題者のため、データ範囲n<=10.(具体的な図形の詳細はサンプルを参照してください.各図形は3つの前の図形でつづられています)
入力:
1行のみ、整数Nを入力し、N次のグラフィックが要求されることを示します.
出力:
対応するグラフィックを出力します.
サンプル入力:
3

サンプル出力:
       /\
      /__\
     /\  /\
    /__\/__\
   /\      /\
  /__\    /__\
 /\  /\  /\  /\
/__\/__\/__\/__\

考え方:
まず三角形を2つの部分に分けて、1つは上の尖った「/」で、もう1つは下の「/_」で、それから三角形をコピーして、スペースに注意して、最後に図形を出力すればいいです.
コード:
#include
#include
using namespace std;
int gd,n;//gd       ,n    
string f[100001];
int main()
{
	gd=2;//            
	f[1]=" /\\ ";//     \       
	f[2]="/__\\";//  
	scanf("%d",&n);
	for(int i=2;i<=n;i++)//    
	{
		for(int j=1;j<=gd;j++)//    
		f[gd+j]=f[j]+f[j];//    
		for(int j=1;j<=gd;j++)
		for(int k=1;k<=gd;k++)
		f[j]=" "+f[j]+" ";//  
		gd=gd<<1;//  *=2
	}
	for(int i=1;i<=gd;i++)
    cout<<f[i], putchar(10);//    
}