HDU 1256 图片8 图片8

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4105    Accepted Submission(s): 1764


Problem Description
谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发.
 

Input
输入的第一行为一个整数N,表示后面有N组数据.
每组数据中有一个字符和一个整数,字符表示画笔,整数(>=5)表示高度.
 

Output
画横线总是一个字符粗,竖线随着总高度每增长6而添加1个字符宽.当总高度从5添加到6时,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形.
每画一个"8"应空一行,但最前和最后都无空行.
 

Sample Input
2 A 7 B 8
 

Sample Output
AA AA AA AA AA AA AA AA AA AA AA BBB BB BB BB BB BBB BB BB BB BB BB BB BBB
 


本题是个数学题,看了好久才看懂一点点(仅仅能说我语文没学好)。

HDU   1256    图片8

图片8本题还要注意格式要求,第一行后面的字母没有空格


思路:求出线的宽度  p=H/6+1

    再求出以下竖线的高度,(竖线的高度是本题的一个突破口,题目说下圈的内径呈正方形)。之后再用for循环输出就可以


#include<stdio.h>
int main()
{
	int n,H;
	char c;
	scanf("%d",&n);
	//getchar();
	while(n--)
	{
		getchar();
		int p,q,j,k;
		scanf("%c %d",&c,&H);
		p=H/6+1;			//线的宽度 
		q=H-3-(H-3)/2;		//以下竖线的高度 
		for(j=1;j<=H;j++)
		{
			if(j==1||j==H||j==(H-1-q))
			{
				for(k=1;k<=p;k++)
				printf(" ");
				for(k=1;k<=q;k++)
				printf("%c",c);
				printf("
");
			}
			else
			{
				for(k=1;k<=p;k++)
				printf("%c",c);
				for(k=1;k<=q;k++)
				printf(" ");
				for(k=1;k<=p;k++)
				printf("%c",c);
				printf("
");
			}
		}
		if(n>0)
		printf("
");
	}
	return 0;
}




版权声明:本文博客原创文章。博客,未经同意,不得转载。