給定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的數...