思路:

  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. Dean and Schedule (URAL 2026)

    Problem A new academic year approaches, and the dean must make a schedule of classes for first-year ...

  2. Leetcode题目141.环形链表(简单)

    题目描述: 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 ...

  3. 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础

    目录 基础问题 实验目的 实验内容 实验步骤 实验总结与体会 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 返回目录 实验内容 WebGoat准备工作 SQL注入攻击 命令注入(Comman ...

  4. Java-CAS 与原子类

    CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术. CAS 的思想很简单:三个参数,一个当前内存值 V.旧的预期值 A.即将更新的值 B,当且仅当预期值 A 和 ...

  5. SpringCloud(1)----基于RestTemplate微服务项目

    在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上再添加SpringCloud框架. 下面 ...

  6. Java堆大小[z]

    JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制. 32位系统下,一般限制在1.5G~2G:64为操作系统对内存 ...

  7. numpy基本方法总结

    NumPy基本方法 一.数组方法 创建数组:arange()创建一维数组:array()创建一维或多维数组,其参数是类似于数组的对象,如列表等 读取数组元素:如a[0],a[0,0] 数组变形:如b= ...

  8. unix进程通信方式总结(上)(转)

    本文将<unix环境高级编程>一书中所涉及的几种重要的进程间通信方式(Inter-Process Communication)进行简单总结,总的来说,进程间通信有以下几种:        ...

  9. jquery简单入门1

    前端 html:展示 form: 属性: action和method 子标签: input(10种) text password radio checkbox file submit button r ...

  10. Jmeter性能测试工具的使用(Web性能测试)

    Jmeter性能测试工具的使用(Web性能测试) 1.下载 http://pan.baidu.com/s/1o7p18Ye 该软件不用安装,直接解压打开即可使用. 2.使用 这里就在win下进行,图形 ...