POJ1032 數學規律

2021-07-08 11:18:26 字數 842 閱讀 8345

給出乙個n,把n拆分成多個不同的數,要求他們的乘積最大,公升序輸出這樣的序列

/*

乙個數分成兩部分,要使得乘積最大必然是兩部分越接近越好

例如9分成4+5,這必然是分成兩份的所有方法中最大的;

然後我們 對於 5,我們發現 5分成2+3, 會 有 2*3>5,所以5還可以分,

也就是對於x分成兩份,x=y+z,其中如果y或z可以再分成兩份,那麼就一直分下去

因為每次分,都會使得乘積變大,直到x==2||y==2,

【由於不能出現重複的數】,那麼分的過程中如果2,3出現過了,下乙個5就不能再分解了

也就是最終的序列會是2+3+4+5+......x,

如果最後多出某一部分y,這部分y肯定不能丟在乙個數上

例如加在x上, 那麼 得到x-1,x+y, 根據剛才的越接近越好的結論,肯定不如x-1+y/2,x+y/2的乘積大

因此還是要均勻地加在每乙個數上,也就是從最大的數開始加;

*/#include #include #include #include #include #include #include #include #include #include using namespace std;

int main()

int tmp=i-1;

int st=2+n/(tmp-1);

for (i=st;i<=tmp+n/(tmp-1)-n%(tmp-1);i++)

for (i=tmp+n/(tmp-1)-n%(tmp-1)+1;i<=tmp+n/(tmp-1);i++)

printf("\n");

return 0;

}

POJ 1032 解題報告

p.s.之前按照列表做,做著做著就做岔了。這裡回歸正軌。這道題後來做成了找規律題 我用遞迴搜尋不出意外地tle了 discuss 上面有好些關於規律的討論和證明,比如 知道後就簡單了很多了。這裡參考了的規律總結。thestoryofsnow 1032 accepted 144k 0msc 1028b...

poj 1032 整數拆分

給你乙個n問求使得 a1 a2 ak n時 a1 a2 ak最大。a1 a2.不相等。沒看懂題目意思。以下 思路 將乙個數分成2份,如何分,使得這兩個數乘積最大。答案是將這個數平分,證明是求x n x 的最大值。基於這種思路,將n分成乘積最大的不相等的多份,應使得其中每份的數相差盡量少,即差值為1的...

poj 1032 整數拆分

好吧,又抄了一篇,嘿嘿 給你乙個n問求使得 a1 a2 ak n時 a1 a2 ak最大。a1 a2.不相等。沒看懂題目意思。我也沒看懂 以下 思路 將乙個數分成2份,如何分,使得這兩個數乘積最大。答案是將這個數平分,證明是求x n x 的最大值。基於這種思路,將n分成乘積最大的不相等的多份,應使得...