二分类数据集 华为鸿蒙 Jetbains全家桶 elasticsearch recursion import concurrency module transactions arm 支付网站建设 jquery each change事件 oracle查询所有数据库 oracle删除表字段 matlab求向量的模 python练习题 mysql 导入数据 python迭代器 python输出函数 python读取mysql数据 python正则替换 python可视化编程 java的包 java8的新特性 java开发环境搭建 java中正则表达式 java初级入门教程 java实现多线程 java框架学习 java连接sql 日历制作模板 蒙文字体 python输入数字 stretchcolumns backtrack3 安卓刷机精灵 文明6万神殿 cf小号 只狼台词
当前位置: 首页 > 学习教程  > 编程语言

Basic Level 1027 打印沙漏 (20分)

2021/2/13 19:22:03 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

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

题目

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

*****
 ***
  *
 ***
*****

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

*****
 ***
  *
 ***
*****
2

代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n, row;
    char sign_;
    cin >> n >> sign_;
    for(int i = 0; i < n; i++)
        if((2 * i * i + 4 * i + 1) > n){
            row = i - 1;
            break;
        }
    for(int i = row; i > 0; i--){
        for(int j = row - i; j > 0; j--) cout << " ";
        for(int k = i * 2 + 1; k > 0; k--) cout << sign_;
        cout << endl;
    }
    for(int i = 0; i < row; i++) cout << " "; cout << sign_ << endl;
    for(int i = 1; i < row + 1; i++){
        for(int j = row - i; j > 0; j--) cout << " ";
        for(int k = i * 2 + 1; k > 0; k--) cout << sign_;
        cout << endl;
    }
    cout <<(n - 2 * row * row - 4 * row - 1);
    return 0;
}

PAT_BasicLevel


本文链接: http://www.dtmao.cc/news_show_700320.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?