PAT乙級 1020完美數列(25)

2021-09-22 12:55:06 字數 769 閱讀 1398

給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m <= m * p,則稱這個數列是完美數列。

現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。

輸入第一行給出兩個正整數n和p,其中n(<= 105)是輸入的正整數的個數,p(<= 109)是給定的引數。第二行給出n個正整數,每個數

不超過109。

在一行中輸出最多可以選擇多少個數可以用它們組成乙個完美數列。
10 8

2 3 20 4 5 1 6 7 8 9

8
思路:用陣列來儲存輸入的n個正整數,然後對陣列用sort按公升序排序。外層遍歷從陣列的第乙個數開始,將其作為最小的數,接著內層遍歷求出滿足要求的最大的數,記錄此時以這兩個數為開頭和結尾的陣列的長度。在內層遍歷時為了過濾掉後面的滿足要求的陣列長度不大於前面情況求解出來的陣列長度的情況,可以令內層迴圈的j=i+count。count為當前陣列的最大長度。

準備工作:

include#後面要用到sort函式 ,不加除了起始位置以外的引數時函式預設為公升序排列,若要實現降序排列可以自己編寫compare函式:

bool compare(int a,int b)

printf("%d",count);

return 0;

}

PAT 乙級 1030 完美數列 25

給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是給定的引數。第二行給出n個...

PAT乙級 1030 完美數列 25

原題鏈結 給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是給定的引數。第二...

PAT 乙級 1030 完美數列(25)

時間限制 300 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 cao,peng 給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個...