zoukankan      html  css  js  c++  java
  • PAT-乙级-1027 打印沙漏

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

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

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    19 *
    

    输出样例:

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



    分析:
      需要考虑沙漏有几层、每层空格个数和字符个数
      只需要求出递减的层数即可
      可以得到一个公式计算层数和多余的个数
      给定个数n:
      层数为floor=sqrt((n+1)/2);剩余个数为n-2*floor*floor+1;



     1 //c++
     2 #include<iostream>
     3 #include<cmath>
     4 using namespace std;
     5 
     6 int main(){
     7   int n;
     8   char c;
     9   cin>>n>>c;
    10   int floor=sqrt((n+1)/2);
    11   int res=n-2*floor*floor+1;
    12   for(int i=0;i<floor;i++){
    13     for(int j=0;j<i;j++)
    14       cout<<' ';
    15     for(int j=0;j<2*(floor-i)-1;j++)
    16       cout<<c;
    17     cout<<endl;
    18   }
    19   for(int i=floor-2;i>=0;i--){
    20     for(int j=0;j<i;j++)
    21       cout<<' ';
    22     for(int j=0;j<2*(floor-i)-1;j++)
    23       cout<<c;
    24     cout<<endl;
    25   }
    26   cout<<res;
    27   return 0;
    28 }
  • 相关阅读:
    1013 数素数
    1012 数字分类
    1010 一元多项式求导
    react-dnd 介绍及使用,react-dnd实现拖拽效果,
    FormData用法详解 var formdata=new FormData();
    【原生】js,setInterval,clearInterval
    <a>标签中的href="javascript:;"是什么意思?
    【git】 log git历史 记录
    CSS3 calc() 函数,width: calc(100%
    字符串截取,方法,slice,substring,substr。
  • 原文地址:https://www.cnblogs.com/tenjl-exv/p/9812895.html
Copyright © 2011-2022 走看看