模擬 乘積最大

2021-09-27 07:43:14 字數 1246 閱讀 2038

給定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

【輸出樣例】

999100009

#include#include#include#include#includeusing namespace std;

typedef listlist;

typedef vectorvector;

int main()

io.insert(i,x); }

/*for(i=io.begin();i!=io.end();i++) cout<<*i<<" ";

cout<<"\n";*/

for(i=io.begin();i!=io.end();i++)

else

if(*i<0&&!hfb)

} }answer=1;

// printf("%d %d %lld %lld\n",num[iz],num[if],hz,hf);

if((iz!=-1&&if!=-1))

else answer=((answer*num[iz])%1000000009*num[if])%1000000009;

} else if(if==-1)

else if(iz=-1)

answer=(answer*hz)%1000000009;

} else if(k%2==0)

else

} }

else answer=0;

printf("%lld",answer);

}

演算法提高 最大乘積 (排序 模擬 貪心)

link 問題描述 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?輸入格式 第一行乙個數表示資料組數 每組輸入資料共2行 第1行給出總共的數字的個數n和要取的數的個數m,1 n m 15,第2行依次給出這n個數,其中每個數字的範圍滿足 a i 的絕對值小於等於4。輸出格式 每組資料輸出...

1017 乘積最大

題目描述 description 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數...

1017 乘積最大

題目描述 description 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數...