您的位置:首页 > 其它

hdoj 画8 1256 (简单模拟)有坑点

2015-12-28 11:55 351 查看

画8

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 5103    Accepted Submission(s): 2207


[align=left]Problem Description[/align]
谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发.

[align=left]Input[/align]
输入的第一行为一个整数N,表示后面有N组数据.

每组数据中有一个字符和一个整数,字符表示画笔,整数(>=5)表示高度.

[align=left]Output[/align]
画横线总是一个字符粗,竖线随着总高度每增长6而增加1个字符宽.当总高度从5增加到6时,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形.

每画一个"8"应空一行,但最前和最后都无空行.

[align=left]Sample Input[/align]

2
A 7
B 8

[align=left]Sample Output[/align]

  AA
AA AA
AA AA
AA
AA AA
AA AA
AA

BBB
BB BB
BB BB
BBB
BB BB
BB BB
BB BB
BBB //有坑点,在输出的横着的那三行时,字符的后面不能有空格。(PE了5次)。。。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int t,n,i,j,k;
int x[3];
int y1,y2;
int l;
char c;
scanf("%d",&t);
while(t--)
{
getchar();
scanf("%c%d",&c,&n);
x[0]=1;x[1]=(1+n)/2;x[2]=n;
y1=(n-3)/2;
l=n/6+1;
if(n&1)
y2=y1;
else
y2=y1+1;
for(i=1;i<=l;i++)
printf(" ");
for(i=l+1;i<=l+y2;i++)
printf("%c",c);
printf("\n");
for(i=2;i<x[1];i++)
{
for(j=1;j<=l;j++)
printf("%c",c);
for(j=l+1;j<=l+y2;j++)
printf(" ");
for(j=l+y2+1;j<=l+y2+l;j++)
printf("%c",c);
printf("\n");
}
for(i=1;i<=l;i++)
printf(" ");
for(i=l+1;i<=l+y2;i++)
printf("%c",c);
printf("\n");
for(i=x[1]+1;i<x[2];i++)
{
for(j=1;j<=l;j++)
printf("%c",c);
for(j=l+1;j<=l+y2;j++)
printf(" ");
for(j=l+y2+1;j<=l+y2+l;j++)
printf("%c",c);
printf("\n");
}
for(i=1;i<=l;i++)
printf(" ");
for(i=l+1;i<=l+y2;i++)
printf("%c",c);
printf("\n");
if(t)
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: