FZU1698 最大乘積

2022-01-19 09:54:00 字數 1214 閱讀 4875

乙個正整數一般可以分為幾個互不相同的自然數的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…。現在你的任務是將指定的正整數n分解成若干個互不相同的自然數的和,且使這些自然數的乘積最大。

只乙個正整數n,(3<= n< 10000)。

第一行是分解方案,相鄰的數之間用乙個空格分開,並且按由小到大的順序。 第二行是最大的乘積。

102 3 5

30

#include #include 

#include

#include

#include

using

namespace

std;

/*思路:要使數盡可能多且每個數不能一樣,用貪心思想從2-3-4-5開始分,直到不可分割之後,從最大的數往前累加到1,因為數字較大使用大數計算

比如:24 一開始為 2 3 4 5 6 餘4 累加一輪為 2 4 5 6 7

*///

大數相乘 注意位置對齊即可

vector bigdatemul(vector nums, int

n)

else

dig /= 10

; }

if(dig)

n /= 10

; index++;

}return

temp;

}int

main()

else

if (n == 4

)

else

//從後向前累加 可能有幾輪

while

(n)

}//存放最後的大數

vectornums;

int num =allnum.back();

//轉換成陣列

while

(num)

//相乘

for (int i = allnum.size() - 2; i >= 0; i--)

printf("%d

", allnum.front());

for (int i = 1; i < allnum.size(); i++)

printf("\n

");for (int i = nums.size() - 1; i >= 0; i--)

printf("\n

");}

}}

DFS BFS 最大乘積

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

WinterEx 最大乘積

時間限制 1 sec 記憶體限制 128 mb 乙個正整數一般可以分為幾個互不相同的自然數的和,如3 1 2,4 1 3,5 1 4 2 3,6 1 5 2 4,現在你的任務是將指定的正整數n分解成若干個互不相同的自然數的和,且使這些自然數的乘積最大。只乙個正整數n,3 n 10000 第一行是分解...

YTU OJ 最大乘積

時間限制 1 sec 記憶體限制 128 mb 提交 292 解決 39 提交 狀態 討論版 命題人 acm4302 對於n個數,從中取出m個數,如何取使得這m個數的乘積最大呢?第一行乙個數 代表資料組數 每組資料共兩行 第一行兩個正整數n m,n,m 20 第二行給出n個整數,其中每個數的絕對值小...