1. 程式人生 > >PAT 1027 列印沙漏

PAT 1027 列印沙漏

題目分析:

對於輸入的正整數N(N < 1000),首先計算出沙漏的最大行數line。

假設沙漏的行數的x,需要的字元為f(x),通過數學公式的計算得到f(x)與x的關係,關係如下:



這樣對於屬於的N我們就可以得到沙漏的行數,就可以按照題目要求的格式打印出來。

程式碼如下:

#include <stdio.h>
#include <math.h>

int main(void)
{
    int num = 0;
    char ch = 0;
    int line = 0;
    while((scanf("%d %c",&num,&ch) != EOF) && (num <= 1000))
    {
        /*得到應列印的行數*/
        line = (int)sqrt(2*num + 2) - 1;

        int index = 0 , j = 0;

        /** 得到上半部分 */
        for(index = line; index >= 1; index = index - 2)
        {
            for(j = 0;j < (line - index)/2 ;j ++)
                printf(" ");
            for(j = 0; j < index; j++ )
                printf("%c",ch);
            printf("\n");
        }
        /** 得到下半部分 */
        for(index = 3; index <= line; index = index + 2)
        {
            for(j = 0;j < (line - index)/2 ;j ++)
                printf(" ");
            for(j = 0; j < index; j++ )
                printf("%c",ch);
            printf("\n");
        }
        printf("%d\n",num - (line+3)*(line-1)/2 - 1);
    }
    return 0;
}


相關推薦

PAT 1027 列印沙漏

題目分析: 對於輸入的正整數N(N < 1000),首先計算出沙漏的最大行數line。 假設沙漏的行數的x,需要的字元為f(x),通過數學公式的計算得到f(x)與x的關係,關係如下: 這樣

PAT乙級 1027 列印沙漏

測試點0、3通過,但1、2執行超時,不知道問題出在哪裡。以下是程式碼: #include<stdio.h> int main(){ int N,useful=1,useless,first_row;//給定字元數、可用字元數、無用字元數、第一行字元數 char ch;//

註釋“PAT 乙級 1027. 列印沙漏(20) Java版”——讓你輕鬆讀懂

尊重原作者,原文資訊如下。 原文作者:柳婼 來源:CSDN 原文:https://blog.csdn.net/liuchuo/article/details/56676279 版權宣告:本文為博主原創文章,轉載請附上博文連結! 我只是對其程式碼按自己的理解做了註釋,

PAT乙級1027列印沙漏

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

PAT (Basic Level) Practice 1027 列印沙漏(20)

此題連結:https://pintia.cn/problem-sets/994805260223102976/problems/994805294251491328 1027 列印沙漏(20)(20 point(s)) 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”

PAT C語言 1027 列印沙漏 (20 分)

PAT C語言 1027 列印沙漏 (20 分) #include<stdio.h> int main() { int n,M; char c; scanf("%d %c", &n, &c); /* 獲得上三角共有多少行 這

PAT (Basic Level) Practice (中文)1027 列印沙漏 (20 分)(C++)

1027 列印沙漏 (20 分) 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再

PAT1027. 列印沙漏(20)

題目在這裡 1027. 列印沙漏(20) 時間限制 200 ms 記憶體限制 65536 kB 程式碼長度限制

PAT(乙級)1027 列印沙漏

題目描述: 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。 給定任意N個符號,

PAT 乙級】1027 列印沙漏

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

pat乙級真題:1027. 列印沙漏(20)

題目連結 題目思路     由於輸入為不大於1000的整數,於是構建一個hourglass[50][99]儲存一個沙漏的上半部分。0代表空格,1代表輸入的特殊符號。然後計算出需要輸出的層數, 再把陣列中的對應部分輸出即可。 注意事項       1

PAT乙級1027 列印沙漏

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。 給定任意N

pat乙級1027. 列印沙漏(20)——二維陣列輸出和直接輸出兩種方法實現

1027. 列印沙漏(20)時間限制200 ms記憶體限制65536 kB程式碼長度限制8000 B判題程式Standard作者CHEN, Yue本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印***** *** * *** *

PAT乙級—1027. 列印沙漏(20)-native

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小

PAT乙級 列印沙漏

列印沙漏 (20 分) 題目描述: 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到

1027. 列印沙漏(20)(C++)

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符

乙級 1027 列印沙漏

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

PAT——1027. 打印沙漏

數量 組成 tin 有一個 循環 不能 erl scan ann 本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰

PAT 1027. 打印沙漏

奇數 程序 可能 cnblogs using strong ace pac post 打印沙漏 本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個

PAT練習集天梯賽L1-002. 列印沙漏--JAVA

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。 給定任意N個符號