zoukankan      html  css  js  c++  java
  • PAT 乙级 1027 打印沙漏(20) C++版

    1027. 打印沙漏(20)

    时间限制
    200 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

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

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

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

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

    输入格式:

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

    输出格式:

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

    输入样例:
    19 *
    
    输出样例:
    *****
     ***
      *
     ***
    *****
    2


     1 // 1027.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<iostream>
     6 
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     int N, n;
    12     char c;
    13 
    14     cin >> N;
    15     getchar();
    16     cin >> c;
    17 
    18     for (n = 1; 2 * n*n - 1 <= N; ++n);
    19 
    20     --n;
    21 
    22     for (int i = n; i >0; --i)
    23     {
    24         for (int j = 0; j < n - i; ++j)
    25             cout << " ";
    26 
    27         for (int j = 0; j < 2 * i - 1; ++j)
    28             cout << c;
    29 
    30         cout << endl;
    31     }
    32 
    33     for (int i = 2; i <= n; ++i)
    34     {
    35         for (int j = 0; j < n-i; ++j)
    36             cout << " ";
    37 
    38         for (int j = 0; j < 2 * i - 1; ++j)
    39             cout << c;
    40 
    41         cout << endl;
    42     }
    43 
    44     cout << N - 2 * n*n + 1 << endl;
    45 
    46     return 0;
    47 }
  • 相关阅读:
    自学Linux命令的四种方法
    linux命令学习
    设计师提高效率必备的10大在线工具
    基于CNN网络的汉字图像字体识别及其原理
    字库的产生
    开篇
    智能建筑系统集成发展目标——节能建筑
    建筑节能案例解析:拜尔的生态幼儿园
    能源管理系统(Synchro EMS)技术架构
    能源管理系统(Synchro EMS)
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/7221591.html
Copyright © 2011-2022 走看看