給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m <= m * p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。
輸入第一行給出兩個正整數n和p,其中n(<= 105)是輸入的正整數的個數,p(<= 109)是給定的引數。第二行給出n個正整數,每個數不超過109。
在一行中輸出最多可以選擇多少個數可以用它們組成乙個完美數列。
10 82 3 20 4 5 1 6 7 8 9
8
思路:先排序,然後迭代整個數列(for i to n)找出最長的完美數列,通過記錄每一步迭代之後完美數列的長度res,從而跳過(i,i+res)部分的檢驗,加快程式執行python:
a =input().split()
a = [int(i) for i in
a]b =input().split()
b = [int(i) for i in
b]b.sort()
a[0] =0
for i in
range(len(b)):
for j in range(i+a[0],len(b)):
if b[j]>b[i]*a[1]:
if a[0]i:
a[0] = j-i
break
if j==len(b)-1:
if b[j]>b[i]*a[1]:
a[0] = j-i
else
: a[0] = j-i+1
break
print(a[0])
c++#include#include
using
namespace
std;
const
int n = 100005
;int
a[n];
intmain()
}cout
}
PAT乙級 Basic Level 真題
時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 題目描述 給定區間 2的31次方,2的31次方 內的3個整數a b和c,請判斷a b是否大於c。輸入描述 輸入第1行給出正整數t 10 是測試用例的個數。隨後給出t組測試用例,每組...
PAT乙級 Basic Level 真題1003
題目描述 令pi表示第i個素數。現任給兩個正整數m n 10000,請輸出pm到pn的所有素數。輸入描述 輸入在一行中給出m和n,其間以空格分隔。輸出描述 輸出從pm到pn的所有素數,每10個數字佔1行,其間以空格分隔,但行末不得有多餘空格。輸入例子 5 27 輸出例子 11 13 17 19 23...
乙級 Basic Level 1019 舊鍵盤
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字 以及實際被輸入的文字,請你列出 肯定壞掉的那些鍵。輸入在2行中分別給出應該輸入的文字 以及實際被輸入的文字。每段文字是不超過80個字元的串,由字母a z 包括大 小寫 數字0 9 以及下劃線 代表空格 組成...