P1887 乘積最大3 || CODE [VS] 3370 乘積最大3
阿新 • • 發佈:2018-06-16
badge printf 最小 AC 問題 輸出 方案 一行 space
題目描述
請你找出M個和為N的正整數,他們的乘積要盡可能的大。
輸出字典序最小的一種方案。
輸入輸出格式
輸入格式:
一行,兩個正整數N,M
輸出格式:
M個和為N的,乘積盡可能的大的正整數。
輸入輸出樣例
輸入樣例#1: 復制6 3
輸出樣例#1: 復制
2 2 2
說明
對於100%的數據, 1 <= N <= 10^9,1 <= M <= 10^6
是個數學題,感覺像個貪心。。。
hhh,今兒心情真不好,某人真是讓我鄙視的不行。
人至賤,則無敵啊,
也不是完全算吧,
就是幼稚,可笑,還自以為有多厲害是嗎,
呵呵了。
當大家都不喜歡你,在背後議論你,
你還很開心的跑過來問:
“哇,我聽到你們提到我了耶,說我什麽了呢?”,
hhh,裝的真可愛,
明明是傻白甜,天天在我面前裝高冷。
惡心。你就天天拍她們的馬屁吧。。。
不扯這些了,煩心。
其實越看越像個貪心題。
如果n能整除m,那麽分成m個n/m他們的乘積就最大。
如果不能整除的話,那就先按n減去n除以m的余數是新的n,
m-余數是新的m,跟第一種情況一樣算出前一部分的。
然後後一部分就剩下余數個數了,
這些數的和比余數個新n/新m的和打了正好余數,
所以循環枚舉,每個數加1輸出就好了。
說不明白,也可能有問題,具體看代碼理解吧。。。
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 using namespace std; 7 8 int n,m; 9 10 int main() 11 { 12 scanf("%d%d",&n,&m); 13 if(n%m==0)14 { 15 for(int i=1;i<=m;++i) 16 printf("%d ",n/m); 17 return 0; 18 } 19 else 20 { 21 int l=n%m; 22 n-=l; 23 for(int i=1;i<=m-l;++i) 24 printf("%d ",n/m); 25 for(int i=1;i<=l;++i) 26 printf("%d ",n/m+1); 27 return 0; 28 } 29 }
如果你不開心,那我就把右邊這個帥傻子分享給你吧,
你看,他這麽好看,跟個zz一樣看著你,你還傷心嗎?
真的!這照片盯上他五秒鐘就想笑了。
一切都會過去的。
時間時間會給你答案2333
P1887 乘積最大3 || CODE [VS] 3370 乘積最大3