PAT 乙級 1027 列印沙漏 20分

2021-10-02 08:06:13 字數 940 閱讀 8178

解題關鍵在於找到符號個數與總行數的關係,通過樣例我們可以將圖形分為倒三角和正三角形,它們的共同特點是三角形的每一行都有等差數列關係

三角形符號個數=(1+x)×n/2(注意這裡只是乙個三角形的符號個數)

那麼如何求出項數(n)呢? 由圖可以發現n=(1+x)/2

通過圖,我們也發現,第一行符號的個數=總行數

將上述三個關係合併,可以得到 (1+x)^2/2-1=n(符號個數)

——————————————————————————————————

為什麼要減1,因為我們將兩個三角形直接求和,多加了乙個符號,所以要減1

化簡有,sqrt(2*(n+1))-1=x(總行數)

先輸出上面的倒三角,在輸出下面的正三角,分兩次迴圈,所以(x+1)/2

在這裡,+1是因為/2後會少一次輸出,得補上(這一點可以在測試的時候更容易理解,可以先忽略)

化簡有sqrt( (n+1) / 2 )

附上**

#include#includeusing namespace std;

int n, n;

char c;

int main()

for (int i = 2; i <= n; i++)

printf("%d", n - (2 * n * n - 1));

return 0;

}

感謝

感謝

PAT 乙級 1027 列印沙漏(20)

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先...

PAT乙級1027 列印沙漏 20

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先從大到小順序遞減到1,再從小到大順序遞增 首尾符號數相等。給定任意n個符號,不一定能正好組成乙個沙漏。要求列印出的沙漏能用掉盡可能...

PAT 乙級 1027 列印沙漏

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先...