PAT 乙級 1030 完美數列 25

2021-07-25 20:20:59 字數 753 閱讀 9359

給定乙個正整數數列,和正整數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分析:

這道題目其實不是很難,只要考慮清楚演算法就可以了。這裡用的演算法是:

1. 先把數列排序(用了.net標準排序,嘿嘿嘿)

2. 從最小的數開始,乘以引數,從最大的數開始驗證,找到完美陣列長度;

3. 對於小於這個長度的陣列統統不考慮,只有有可能超過這個長度的陣列才驗證。(具體怎麼做的,看**吧~)

特別要注意,雖然這些數本身是在int範圍內的,但是乘積就不一定了,所以至少乘積要用long。陣列本身應該是可以用int的,這樣會快很多~不過為了以防萬一,我就用了long,懶得再測試啦~~

using system;

namespace pat

}console.write(maxlength);}}

}

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和一些正整數,請你從中選擇盡可能多的數構成乙個...

PAT 乙級 1030 完美數列(25 分)

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