游客 Signup | Login
中文 | En

1649 - 叠筐

把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。


Input

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;


Output

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。


Examples

Input

5 ^ !
7 ( )
0

Output

 ^^^ 
^!!!^
^!^!^
^!!!^
 ^^^ 

 ))))) 
)((((()
)()))()
)()()()
)()))()
)((((()
 ))))) 

Solution C

#include <stdio.h>
int main()
{
int n,i,j,t,u=0;
char a,b,r;
while(scanf("%d %c %c",&n,&a,&b)!=EOF)
{
   if(u!=0)
    printf("\n");
   if(n==1) 
    printf("%c\n",a); 
   else 
   {
    if((n+1)/2%2==1)   
    {   r=a; a=b;   b=r; } 
    printf(" ");
    for(i=0;i<n-2;i++)
      printf("%c",b);
    printf(" \n");
    for(i=2;i<n;i++)
    {
     if(i<=(n+1)/2)
      t=i;
     else 
      t=n+1-i;
     for(j=1;j<=n;j++)
     {
      if(j<=t||j>n-t)
      {
       if(j%2==1)
        printf("%c",b);
       else 
        printf("%c",a);
      }
      else
      {
       if(i%2==0)
        printf("%c",a);
       else 
        printf("%c",b);
      }
     }
     printf("\n");
    }
    printf(" ");
    for(i=0;i<n-2;i++)
      printf("%c",b);
    printf(" \n");
    u++;
   }
}
   return(0);
}

Solution C++

#include <stdio.h>
int n;
int run()
{
	char a,b;
	int i,j,k,l,t,m;
	scanf(" %c %c",&a,&b);
	m=n/2+1;
	for(i=1;i<=n;i++)
	{
		k=m-i;
		if(k<0)
			k=-k;
		for(j=1;j<=n;j++)
		{
			l=m-j;
			if(l<0)
				l=-l;
			if((k==m-1)&&(l==m-1)&&(n>1))
				printf(" ");
			else
			{
				t=l;
				if(t<k)
					t=k;
				if(t%2==0)
					printf("%c",a);
				else
					printf("%c",b);
			}
		}
		printf("\n");
	}
	printf("\n");
}
int main()
{
	scanf("%d",&n);
	while(n!=0)
	{
		run();
		n=0;
		scanf("%d",&n);
	}
	return 0;
}
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题