欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HDU 1256 画8(简单模拟+格式打印)

程序员文章站 2022-06-09 17:56:32
...

HDU 1256 画8(简单模拟+格式打印) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1256
画8
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11363 Accepted Submission(s): 4649

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

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

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

Sample Input
2
A 7
B 8

HDU 1256 画8(简单模拟+格式打印)
注意中间有空格,开头结尾都没有,否则会不过。
AC代码:

#include<bits/stdc++.h>

using namespace std;

int main()
{
	int N;
	cin >> N;
	char T;
	int h;
	while (N--)
	{
		cin >> T >> h;
		int i;
		int uph = (h - 3) / 2;   //上面部分的高度
		int wid = h / 6 + 1;       //竖线宽度
		int downh = h - 3 - uph;    //下面部分的高度
		for (int k = 0; k < h; k++)
		{
			if (k == 0 || k == uph+1 || k == h - 1)
			{
				for (i = 0; i < wid + downh; i++)
				{
					if (i < wid)
					{
						cout << ' ';
					}
					else
					{
						cout << T;
					}
				}
				cout << endl;
			}
			else
			{
				for (int j = 0; j < 2 * wid + downh; j++)
				{
					if (j<wid || j>=wid + downh)
					{
						cout << T;
					}
					else
					{
						cout << ' ';
					}
				}
				cout << endl;
			}
		}
		if (N != 0)
		{
			cout << endl;
		}
	}
	return 0;
}