打印沙漏()

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

复制代码
*****
 ***
  *
 ***
*****

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

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

输入格式:

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

输出格式:

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

输入样例:

复制代码
19 *

输出样例:

复制代码
*****
 ***
  *
 ***
*****
2

公式 n=sqrt((N+1)/2) 上半层的层数

1 1

1+3 4

1+3+5 9

1+3+5+7 16

1+3+5+7+9 25

1+3+5+7+9+11 36

下半层比上半层少1 故N+1 然后/2 开平方

cpp 复制代码
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    char ch;
    int N;cin>>N>>ch;
    int n=sqrt((N+1)/2);
    for(int i=n;i>0;i--)
    {
        for(int k=n-i;k>0;k--)
        {
            cout<<" ";
        }
        for(int j=i*2-1;j>0;j--)
        {
            cout<<ch;
        }
        cout<<endl;
    }
    for(int i=2;i<=n;i++)
    {
        for(int k=n-i;k>0;k--)cout<<" ";
        for(int j=i*2-1;j>0;j--) cout<<ch;
            cout<<endl;
        }
    cout<<N-(n*n+n*n-1)<<endl;
    return 0;
}
相关推荐
GreenTea4 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
Bode_20025 小时前
多资源规划(含生产调度、库存管理及产能规划)的创新优化算法
算法·调度
Logic1015 小时前
C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
土司大王5 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
微三云生态系统架构师-彭丹6 小时前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王6 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
Logic1016 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
爱吃苹果的日记本7 小时前
数据结构第三课(时间复杂度)
数据结构·学习
罗西的思考7 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
Logic1018 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和