1027.打印沙漏(20)
来源:互联网 发布:小程序授权登录源码 编辑:程序博客网 时间:2024/05/22 17:32
1027.打印沙漏(20)
时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
*
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
代码:
#include <stdio.h>int main(){ int N; char ch; int sum = -1, csum, k = -1, i, j, I, K; scanf("%d %c", &N, &ch); for (i = 0; sum <=N; i++) { csum = sum; sum = csum + (k + 2) * 2; k = k + 2; } I = i-1;//跳出循环的时候是sum大于N之后所以i多进行啦两次只-1是因为后面的循环是用的'<' K = k-2;//同理k同样的原因多加啦一次2 for (i = 0; i < I; i++) { for (j = 0; j < i; j++)//补充空格 printf(" "); for (j = 0; j < K; j++) { printf("%c", ch); } printf("\n"); K = K - 2; } K = K+4;//跳出上面循环的时候多减啦次2,但是由于沙漏的颈部一个‘*’只用打印一次所直接跳到打印三个‘***’所以再加2,就是加4 for (i = I-1; i > 0; i--) { for (j = 1; j < i; j++)//补充空格 printf(" "); for (j = 0; j <K; j ++ ) { printf("%c", ch); } printf("\n"); K = K + 2; } printf("%d", N - csum); return 0;}
截图:
阅读全文
0 0
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- 1027. 打印沙漏(20)
- Android6.0 Sensor架构和问题分析
- 买卖股票的最佳时机 II-LintCode
- 仿京东侧边栏 tp php html
- HDU2795Billboard
- java递归巧用(递归计算从x到y的和)
- 1027.打印沙漏(20)
- 发送邮件的原理
- Android 图片选择对话框,通过本地相册或照相机获得图片,可单选或多选,单选可设置是否裁剪
- 能量采集 HYSBZ
- 218. The Skyline Problem [leetcode]
- 二分算法个人总结c++
- matlab编程体会——2017/8月9月
- log4j.properties文件配置的一种方式
- 【ZOJ3541】The Last Puzzle 区间DP+贪心