本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

*****
***
*
***
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:
19 *
输出样例:
*****
***
*
***
*****
2
1. 我的实验代码
```
#include <stdio.h>
int main()
{
int n;
char c;
scanf("%d %c",&n,&c);
int sum=1;//沙漏需要的字符个数
int i=1;//层数
while(sum<=n)
{
sum+=2*(2*(i+1)-1);//2n-1是一层的个数,乘以2代表两层一共需要的
if(sum<=n)
i++;
}
int j,k;
for(j=0;j<i;j++)//打印上半部分
{
for(k=0;k<j;k++)
printf(" ");
for(k=0;k<2*(i-j)-1;k++)
{
printf("%c",c);
}//输出*

printf("\n");
}
for(j=2;j<=i;j++)
{
for(k=0;k<i-j;k++)
printf(" ");
for(k=0;k<2*j-1;k++)
{
printf("%c",c);
}

printf("\n");
}

printf("%d",n-(sum-2*(2*(i+1)-1)));

}#include <stdio.h>
int main()
{
int n;
char c;
scanf("%d %c",&n,&c);
int sum=1;//沙漏需要的字符个数
int i=1;//层数
while(sum<=n)
{
sum+=2*(2*(i+1)-1);//2n-1是一层的个数,乘以2代表两层一共需要的
if(sum<=n)
i++;
}
int j,k;
for(j=0;j<i;j++)//打印上半部分
{
for(k=0;k<j;k++)
printf(" ");
for(k=0;k<2*(i-j)-1;k++)
{
printf("%c",c);
}//输出*

printf("\n");
}
for(j=2;j<=i;j++)
{
for(k=0;k<i-j;k++)
printf(" ");
for(k=0;k<2*j-1;k++)
{
printf("%c",c);
}

printf("\n");
}

printf("%d",n-(sum-2*(2*(i+1)-1)));

}
```
2. 解析思路:
这个题目呀需要找到最合适规律,然后就简单了。我们发现每一层都会有它所对应的所需字符个数,我们就可以利用这个寻找规律,最后发现sum+=2*(2*(i+1)-1);//2n-1是一层的个数,乘以2代表两层一共需要的(i是层数,sum是字符个数),因为图像是对称结构所以我们只要能打出上一部分的,那么下一部分也就差不多出来了。最后呢就是利用n-(sum-2*(2*(i+1)-1))这个来计算多出来的字符数。

寒假作业pta1的更多相关文章

  1. Q114寒假作业之割绳子

    割绳子 TimeLimit:1000MS  MemoryLimit:10000K 64-bit integer IO format:%lld Problem Description 已知有n条绳子,每 ...

  2. Luogu P2717 寒假作业(平衡树)

    P2717 寒假作业 题意 题目背景 \(zzs\)和\(zzy\)正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有\(n\)项寒假作业.\(zzy\)给每项寒假作业都定义了一个疲劳值 ...

  3. 寒假作业---蓝桥杯---DFS

    题目描述 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: 每个方块代表1~13中的某一个数字,但不能重复. 比如: 6  + 7 = 13 9  - 8 = 1 3  * 4 = 12 10 ...

  4. java 寒假作业

    寒假作业 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ (如果显示不出来,可以参见[图1.jpg]) 每个方 ...

  5. 2016蓝桥杯省赛C/C++A组第六题 寒假作业

    题意:现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ 每个方块代表1~13中的某一个数字,但不能重复. 比如: ...

  6. java实现第七届蓝桥杯寒假作业

    题目6.寒假作业 寒假作业 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ (如果显示不出来,可以参见[图1. ...

  7. 【GDKOI2014】JZOJ2020年8月13日提高组T3 壕壕的寒假作业

    [GDKOI2014]JZOJ2020年8月13日提高组T3 壕壕的寒假作业 题目 Description Input Output 输出n行.第i行输出两个整数,分别表示第i份作业最早完成的时刻以及 ...

  8. 关于第三次寒假作业之C++Calculator项目的情况:

    一.仓库地址: object-oriented: 二.作业要求: Calculator: 三.完成本次作业的情况及感受: 刚接触到这个题目的时候,自己就是那丈二的和尚,摸不着头脑,由于自己视频找得比较 ...

  9. 寒假作业2:简化电梯设计elevator

    Github仓库地址:hua-kui 寒假学习计划:学习计划 - 题目背景 一栋10层的大楼(楼层编号1-10),设有一台无限载重的电梯,初始时电梯停在1层.电梯移动1层的耗时为1,在某一层停靠的耗时 ...

随机推荐

  1. [树组BIT]训练两题重新理解ver.

    树状数组重(jiao)新(wo)理(zuo)解(ren) POJ-2352 加加加都给我加 输入是一行一行按照x从小到大给出的,所以对于每个点,要考虑的只是x比它小的点的个数.即记录各个x的情况,并且 ...

  2. flask第一章 flask启动 路由视图 FlaskRequest jinja2 FlaskSession

    一.简单了解flask web框架 优点: 小而精,组件只有session,第三方机构强烈支持flask,极其简单 缺点: 由于第三方软件的关系,稳定性相对较差,flask-session 扩展知识: ...

  3. 7. Reverse Integer Add to List★

    题目内容: Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 题目分 ...

  4. Python中字符串的处理方法

    1.字符串 word = '字符串' sentence = "这是一个句子." paragraph = """这是一个段落, 可以由多行组成" ...

  5. ecplise中设置字体大小和背景

    1 将ecplise中的代码背景设置为豆沙色 2 设置ecplise中的字体大小

  6. Windows创建Sciter的第一个程序.HelloWorld

    介绍什么的就免了.直接进入正题 平台: Windows 10 IDE : Visual studio 2017 首先从官网下载最新的SDK,https://sciter.com/download/ 创 ...

  7. 如何在linux环境安装数据库

    1.1      获取oracle 数据库安装包: 注意:获取的是database的安装包,不是客户端的安装包 1.2      以root用户登陆云主机,修改主机名 Hostname 1.2.1   ...

  8. 给大家介绍一个实用的RN神器DeviceEventEmitter

    再不出来更新一下自己都感觉不到自己还存在了,这个监听最常用的地方莫过于单选和全选了,,当然远不止这个了,大家可以自己去多尝试几波,举个栗子 A组件全选所在 //全选 choose(bool){ //选 ...

  9. sql嵌套查询

    嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. ...

  10. MySQL存储过程中实现执行动态SQL语句

    sql语句中的任何部分都可以作为参数. DROP PROCEDURE if exists insertdata; delimiter //CREATE PROCEDURE insertdata(IN ...