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
注意中间有空格,开头结尾都没有,否则会不过。
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;
}