pat 1030 完美數列

2021-07-23 03:35:14 字數 765 閱讀 2578

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

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

輸入格式:

輸入第一行給出兩個正整數n和p,其中n(<= 10^5)是輸入的正整數的個數,p(<= 10^9)是給定的引數。第二行給出n個正整數,每個數不超過10^9。

輸出格式:

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

輸入樣例:

10 8

2 3 20 4 5 1 6 7 8 9

輸出樣例:

思路:先排序,然後從左到右遍歷陣列,對每乙個a[i]查詢陣列下標滿足小於等於a[i]*p的最大值。(ps:這題關鍵是要想到二分查詢加速,還要注意int可能溢位(不知道卡沒卡這個測試點))

#include

#include

using

namespace

std;

const

int maxn=100005;

typedef

long

long ll;

ll a[maxn];

int n,p;

void solve()

printf("%d\n",ans);

}int main()

solve();

return

0;}

PAT 1030完美數列

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

PAT1030 完美數列

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

PAT 1030 完美數列

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