zoukankan      html  css  js  c++  java
  • 打印沙漏 (20 分)

    主要还是等差公式: 等差数列前n项和:  (1) Sn = n*(a1 + an) / 2   (2) 

    #include <iostream>
    #include <cmath> 
    using namespace std;
    
    int main()
    {
        int n, m;
        char sign;
        
        cin >> n >> sign;
        
        m = sqrt((n + 1) / 2 );
        
        int k = 1;
        for(int i = m; i >= 1; i --)
        {
            for(int i = 1; i < k; ++ i)        cout << " ";
            k ++;
            for(int j = 1; j <= 2*i - 1; ++ j)    cout << sign;
            cout << endl;
        }
        
        k --;
        for(int i = 2; i <= m; i ++)
        {
            k --;
            for(int i = 1; i < k; ++ i)        cout << " ";
            for(int j = 1; j <= 2*i - 1; ++ j)    cout << sign;
            cout << endl;
        }
        
        cout << (n - 2 * m * m + 1) << endl; 
        
        return 0;
    }

    最开始尝试用递归求解, 但是递归爆栈了, 又改用循环.

  • 相关阅读:
    两种称谓
    HDU 1074

    Educational Codeforces Round 44
    nowcoder—Beauty of Trees
    nowcoder-练习赛16
    c++作业-8
    差的东西
    nowcoder-挑战赛14
    BZOJ2548 [CTSC2002] 灭鼠行动
  • 原文地址:https://www.cnblogs.com/mjn1/p/11278224.html
Copyright © 2011-2022 走看看