給定乙個正整數數列,和正整數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 是輸入的正整數的個數,...