1027. 打印沙漏(20) PAT
来源:互联网 发布:unity ugui背包 数据 编辑:程序博客网 时间:2024/05/16 04:53
1027. 打印沙漏(20)
时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
***** *** * ********
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:19 *输出样例:
***** *** * ********2
#include <cstdio>#include <iostream>#include <cstring>using namespace std;//沙漏符号数 ---[3*n+n*(n-1)] *2+1int main(){char c;int N;cin>>N>>c;int n=0,temp=0,last=0;for(;;n++){temp=(3*n+n*(n-1))*2+1;if(temp==N){last=0;break;}else if(temp>N){n=n-1;last=N-((3*n+n*(n-1))*2+1);break;}}int an=3+2*(n-1),p=0;int tagn=n;for(;tagn>0;tagn--){ for(int i=p;i>0;i--){ cout<<" "; } for(int i=1;i<=an;i++){ cout<<c; } cout<<endl; an=an-2; p++;}/*****************最中间的那一行 begin*********/ for(int i=p;i>0;i--){ cout<<" "; } for(int i=1;i<=an;i++){ cout<<c; } cout<<endl; p--; /*****************最中间的那一行 end*********/ tagn=n; an=an+2; for(;tagn>0;tagn--){ for(int i=p;i>0;i--){ cout<<" "; } for(int i=1;i<=an;i++){ cout<<c; } p--; an=an+2; cout<<endl; } printf("%d\n",last);return 0;}
目瞪狗呆。
每一行的 * 后面不用再输出空格。
0 0
- PAT 1027. 打印沙漏(20)
- 1027. 打印沙漏(20) PAT
- PAT 1027. 打印沙漏(20)
- PAT --- 1027. 打印沙漏(20)
- PAT 1027. 打印沙漏
- PAT 1027. 打印沙漏
- Pat 打印沙漏(20)
- PAT-乙级-1027. 打印沙漏(20)
- PAT(B) - 1027. 打印沙漏(20)
- PAT乙级.1027. 打印沙漏(20)
- 1027. 打印沙漏(20) PAT 乙级
- PAT 乙级 1027. 打印沙漏(20)
- PAT BASIC LEVEL 1027. 打印沙漏(20)
- PAT-B 1027. 打印沙漏(20)
- PAT 乙级 1027. 打印沙漏(20)
- PAT乙级 1027. 打印沙漏(20)
- PAT乙级1027. 打印沙漏(20)
- [PAT乙级]1027. 打印沙漏(20)
- JavaScript中的Math.ceil()、Math.floor()、Math.round()详解
- 20170515_重新组装单链表
- 4-3 简单求和 (10分)
- bzoj 2093: [Poi2010]Frog 倍增
- QT4 USB串口设备打开出错的解决办法
- 1027. 打印沙漏(20) PAT
- 无限“递归”的python程序
- greenlet 详解
- VUE多层路由嵌套
- php删除文件以及目录
- WannaCry勒索病毒处理指南
- TNS-12535 TNS-00505的处理方法
- 百度地图修改点汇聚样式(JS地图)
- 驱动文章列表