思路:

  1. 使用数组保存每一行沙漏的最大符号数
  2. 输入一个正整数和一个符号
  3. 遍历数组,找到大于正整数的数组下标 j。
  4. 三角形底边的字符数为 (j - 1) * 2 - 1
  5. 打印沙漏
  6. 打印剩余字符:x - n[j - 1]

AC代码

#include <cstdio>
const int max_n = 200;
int n[max_n] = {0};
int i = 3;
void init() {
n[1] = 1;
n[2] = 7;
int sum = 0;
while(n[i-1] < 1000) {
int j = (i * 2 - 1) * 2;
n[i] = n[i - 1] + j;
i++;
}
}
int main() {
init();
int x;
char y;
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
scanf("%d %c", &x, &y); //x:正整数 y:符号
// int i = 1;
// while(n[i] != 0) {
// printf("%d:---%d---\n", i,n[i]);
// ++i;
// }
// printf("*********%d*************\n", i);
int j = 1;
while(n[j] <= x) {
j++;
}
int bottom = (j - 1)*2-1; //三角形底边的字符数
//int space = (bottom+1)*(bottom-1)/2-1;
// printf("%d\n", small);
//打印沙漏
//倒三角
// printf("bottom: %d\n", bottom);
for(int i = bottom; i >= 1; i-=2) {
for(int j = 0; j < (bottom - i) / 2; j++) {
printf(" ");
}
for(int j = 0; j < i; j++) {
printf("%c", y);
}
printf("\n"); }
//正三角
for(int i = 3; i <= bottom; i+=2) {
for(int j = 0; j < (bottom - i) / 2 ; j++) {
printf(" ");
}
for(int j = 0; j < i; j++) {
printf("%c", y);
}
printf("\n");
}
printf("%d\n", x - n[j-1]);
return 0;
}

PAT B1027 打印沙漏(20)的更多相关文章

  1. PAT 1027 打印沙漏(20)(思路)

    1027 打印沙漏(20)(20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓& ...

  2. PAT B1027 打印沙漏 (20 分)

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两 ...

  3. PAT 1027. 打印沙漏(20)

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指每行 ...

  4. PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)

    PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)  http://www.patest.cn/contests/pat-b-practise/1027 本题 ...

  5. PAT乙级 1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  6. PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  7. PAT 乙级 1027 打印沙漏(20) C++版

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  8. PAT-乙级-1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  9. pat00-自测1. 打印沙漏(20)

    00-自测1. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打 ...

随机推荐

  1. 捣乱Linux环境下的C语言

    #include <stdlib.h> 头文件作用.CSDN C 标准库 – <stdlib.h> | 菜鸟教程  https://www.runoob.com/cprogra ...

  2. Django-静态文件导入/url命名及反向解析

    一.静态文件导入 js.css.img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在settings配置文件里面写上这写内容: # STATIC_URL = '/xxx/' #别 ...

  3. ie8中如何使用base64

    由于ie8中不能使用jQuery2.0以上版本所以无法使用 window.btoa()加密 window.atob()解密 所以只能使用最原生的base64加密方法如下: /** * Created ...

  4. Shichikuji and Power Grid

    D. Shichikuji and Power Grid 参考:Codeforces Round #597 (Div. 2) 思路:一个很裸的最小生成树.把建立基站看成是,城市与源点(虚构的)建边.由 ...

  5. 关于kafka定期清理日志后再消费报错kafka.common.OffsetOutOfRangeException的解决

    环境: kafka  0.10 spark  2.1.0 zookeeper  3.4.5-cdh5.14.0 公司阿里云测试机,十月一放假前,没有在继续消费,假期过后回来再使用spark strea ...

  6. appium中从activity切换到html

    问题:混合开发的app中,会有内嵌的H5页面元素,该如何进行定位操作? 解决思路:appium中的元素定位都是基于android原生控件进行元素定位,而web网页是B/S架构,两者运行环境不同需要进行 ...

  7. jetbrains 2019 激活 error 1653219 解决办法

    我以前用PyCharm按照http://idea.lanyus.com/上的激活码直接可激活. 后来用到IDEA(最新版)了之后激活报错.错误代码为1653219. 后参考博客 解决办法: 把host ...

  8. linux(redhat)安装jdk1.8

    第一步:下载Linux环境下的jdk1.8文件 我的Linux是32位的,因此我下载jdk-8u144-linux-i586.tar.gz文件. 下载链接地址:http://www.oracle.co ...

  9. a lot of attention under the hood

    Because one of the original goals of the Node.js project was to allow developers to easily build app ...

  10. svn--备忘