HDU 1256 画8

来源:互联网 发布:机智自动交易软件 编辑:程序博客网 时间:2024/06/06 18:19

画8

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


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

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

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

Sample Input
2A 7B 8
 

Sample Output
AAAA AAAA AA AAAA AAAA AA AA BBBBB BBBB BB BBBBB BBBB BBBB BB BBB
 
分析:
无脑模拟就好了,他怎么走你怎么走就OK了;但是要注意的几点是下圈的高度和‘8’的kuang宽度,之所以把这题放博客上式因为我在这题PE了很多次 :
首先呢,每个输出之间是有空行的,但最前和最后都是没有空行的;这个很好控制的;
然后就是,每个'8'的 最开始一行和中间一行还有最后一行,是没有空格的,所以不要用空格去填满它;
我们处理的时候,就是先处理哪些比较短的行,让其输出,因为其输出格式是一样的;输出最短的行的时候还要考虑其有多少个字符串需要输出,因为题目中有说过要求的是下圈的圈圈是个正方形,那么我们只要求出下圈的高就好了,并且下圈是尽可能接近上圈的   但是(下圈>=上圈)我们只要用所给长度 (len-3(除了上下圈的无关行))/2 得到的就是上圈的高度,那么下圈的高度自然也是知道了,所以上圈下圈的高度知道了,那么最短行就很容易写出来了;
再然后就是控制空格输出的位置就好了;


给出AC代码:
#include<iostream>#include<string>#include<cstring>using namespace std;int main(){char x;int y;int t;scanf("%d", &t);while (t--){getchar();scanf("%c %d", &x, &y);int z = y / 6 + 1;int len;if ((y - 3) % 2 == 0)len = (y - 3) / 2;else len = (y - 3) / 2 + 1;int wd = len + 2 * z;for (int i = 0; i < z; i++)printf(" ");        //输出第一个最短行for (int i = 0; i < len; i++)printf("%c", x);//for (int i = 0; i < z; i++)printf(" ");printf("\n");for (int i = 0; i < (y-3)/2; i++)          //输出上圈{for (int j = 0; j < wd; j++){if (j< z || j>len + z - 1)printf("%c", x);else printf(" ");}printf("\n");}for (int i = 0; i < z; i++)printf(" ");      //输出中间的最短行for (int i = 0; i < len; i++)printf("%c", x);//for (int i = 0; i < z; i++)printf(" ");printf("\n");for (int i = 0; i < len; i++)                 //输出下圈{for (int j = 0; j < wd; j++){if (j< z || j>len + z - 1)printf("%c", x);else printf(" ");}printf("\n");}for (int i = 0; i < z; i++)printf(" ");       //输出最后的最短行;for (int i = 0; i < len; i++)printf("%c", x);//for (int i = 0; i < z; i++)printf(" ");printf("\n");if (t)printf("\n");                          //控制每次输出之间有空行;}return 0;}



1 0
原创粉丝点击