本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定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. Python标准库--time模块的详解

    time模块 - - -时间获取和转换 在我们学习time模块之前需要对以下的概念进行了解: 时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08 ...

  2. js --"说声爱你不容易"

    <div class="tit"><label>yourName:</label><input type="text" ...

  3. 浅谈java 之 Map

    先来一张Map的类继承图 Map :Hashtable .HashMap .LinkedHashMap .TreeMap 的比较   1.Hashtable的方法实现了synchronized 是线程 ...

  4. 初学者如何迅速学习web前端开发

    首先告诉你的是,零基础学习开始学习web前端肯定难,web前端的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是没办法,为了生存掌握一个技能,你必须学,如果你认真的对待, ...

  5. javascript数据加减问题

    需要parseInt把获取到的html(),text()的值转换为数字型,然后进行加减乘除操作就可以了:

  6. java Reference

    相关讲解,参考: Java Reference 源码分析 Java Reference详解 Reference: // 名称说明下:Reference指代引用对象本身,Referent指代被引用对象 ...

  7. 一个redis因为关闭快照无法连接的BUG

    [2018-04-19 11:00:08,587: ERROR/MainProcess] consumer: Cannot connect to redis://127.0.0.1:6379/0: M ...

  8. C# FTP操作报550错误

    最近在做FTP创建文件夹和上传文件的功能,测试之后一直提示“远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)”,我在网上找了很久的解决方案也没有解决掉这个问题,网上找到的 ...

  9. 第一次 刷 WiFi 模块esp8266 感谢创客阿正

    在正哥指导下 第一次 刷 WiFi 模块  少走了 不少弯路 套件里的 两块 机智云  ==== 我的电脑 需要单独供电 先 对应 接好 ic0要记得接gnd 等待上电时要断电重启 等  用助手 返回 ...

  10. RabbitMQ集群出现过机器故障,网络异常等故障后,重启无法重新建立集群的终极解决方案

    由于机器掉电,网络故障等原因,RabbitMQ整个集群出现问题.重启RabbitMQ时,发现某些机器始终无法重新加入到集群中,而且还可能出现网络分区. 针对不同情况,可能选择 rabbitmqctl ...