HDU 1256 画8
2016-04-03 10:26
274 查看
画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
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
分析:
无脑模拟就好了,他怎么走你怎么走就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; }
相关文章推荐
- 我是一个线程(转)
- Activiti保存流程图时diagrms中没有生成png解决办法
- JDBC造的Mysql To Oracle数据表同步工具
- [HeadFirst-HTMLCSS学习笔记][第三章创建网页]
- [HeadFirst-HTMLCSS学习笔记][第三章创建网页]
- 【转】赶集网mysql开发36军规
- 飛飛(十八)计算fibnacci序列的第n个数
- Ubuntu源码配置OpenCV,安装PCL
- Yii框架学习 新手教程(一)
- Python基础之数据类型
- 【转】赶集网mysql开发36军规
- optipng图片压缩工具
- 两个整数,输出绝对值较大者
- [HeadFrist-HTMLCSS学习笔记][认识HTML中的“HT”]
- [HeadFrist-HTMLCSS学习笔记][认识HTML中的“HT”]
- 有序数组的查找
- Camtasia Studio录制屏幕字迹不清晰的原因
- Javascript中最常用的55个经典技巧(转)
- C#套接字和windowsAPI套接字
- Ruby语言基础学习五:Ruby 方法、块