2023年藍橋杯B組c c 第十題詳解

2021-09-30 16:50:45 字數 1427 閱讀 7562

給定n個整數a1, a2, … an。請你從中選出k個數,使其乘積最大。

請你求出最大的乘積,由於乘積可能超出整型範圍,你只需輸出乘積除以1000000009的餘數。

注意,如果x<0, 我們定義x除以1000000009的餘數是負(-x)除以1000000009的餘數。

即:0-((0-x) % 1000000009)

第一行包含兩個整數n和k。

以下n行每行乙個整數ai。

對於40%的資料,1 <= k <= n <= 100

對於60%的資料,1 <= k <= 1000

對於100%的資料,1 <= k <= n <= 100000 -100000 <= ai <= 100000

乙個整數,表示答案。

5 3-100000

-10000

2100000

10000

再例如:

5 3-100000

-100000

-2-100000

-100000

-999999829

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

貪心策略:判斷需要從n個數字中取出的k個數字是否是偶數

需要將所有的資料提前排序

if(n-count(0) < k) 直接輸出0即可

偶數:兩個數兩個數的計算,頭尾進行比較,取大數進行相乘

奇數:取a[n-1] 判斷是否為負數

負數:從後向前進行計算

正數:和偶數的計算方法一樣

#include #include #include #define mod 1000000009

#define max 100005

typedef long long ll;

using namespace std;

int a[max];

int main()

}ll ans = 1;

sort(a, a+n);

if(n-k < numzero)

if(k%2 == 0)else

k -= 2;

}}elseelse

k -= 2;

}}else}}

printf("%lld\n", 0-((0-ans)%mod));

return 0;

}

2023年藍橋杯C C 組B組第二題

include includeint a 30 int fun1 int num for int j last printf n if getasynckeystate 48 sum if j 29 if go 0 if k 27 a k 0 else if go 1 else if go 2 把剩...

2023年藍橋杯B組c c 第八題詳解

小明維護著乙個程式設計師論壇。現在他收集了乙份 點讚 日誌,日誌共有n行。其中每一行的格式是 ts id 表示在ts時刻編號id的帖子收到乙個 贊 現在小明想統計有哪些帖子曾經是 熱帖 如果乙個帖子曾在任意乙個長度為d的時間段內收到不少於k個讚,小明就認為這個帖子曾是 熱帖 具體來說,如果存在某個時...

2023年藍橋杯預賽第十題加密

題目 一種playfair密碼變種加密方法如下 首先選擇乙個金鑰單詞 稱為pair 字母不重複,且都為小寫字母 然後與字母表中其他字母一起填入至乙個5x5的方陣中,填入方法如下 1.首先按行填入金鑰串。2.緊接其後,按字母序按行填入不在金鑰串中的字母。3.由於方陣中只有25個位置,最後剩下的那個字母...