description
對乙個自然數n ( 1 <= n <= 50 ) ,n可以分解成若干個數字(數字可以是1,2,3,….,9)之和,問題是如何分解能使這些數字的乘積最大。
input
輸入資料有多組,每組佔一行,每行包含乙個自然數n(1 <= n <= 50)。輸入檔案直到eof為止!
output
對每組輸入,輸出有2行。第一行是n分解出的所有數字,以空格分隔,最後乙個數字後也有空格;第二行是n分解出的所有數字的個數、乘積。
sample input
20sample output2428
3 3 3 3 3 3 2hint7 1458
3 3 3 3 3 3 3 3
8 6561
3 3 3 3 3 3 3 3 4
9 26244
由數學知識可知,只有把n分成盡可能多的3,它們的乘積才能最大(當只剩下4時不用再分,因為: 4 > 3*1)
題意:把n分成多個數相加求出各個加數相乘最大的方法
分析:遞迴,乙個乙個的分成3,然後求積
**:
#includeusing namespace std;
long long int s,t;
void vp(int n)
else
{s++;
t*=n;
cout<>n)
{s=0;
t=1;
vp(n);
cout<
感受:
其實就是按著提示來,沒有難度。。
M 數值分解
description 對乙個自然數n 1 n 50 n可以分解成若干個數字 數字可以是1,2,3,9 之和,問題是如何分解能使這些數字的乘積最大。input 輸入資料有多組,每組佔一行,每行包含乙個自然數n 1 n 50 輸入檔案直到eof為止!output 對每組輸入,輸出有2行。第一行是n分解...
遞推遞迴 M 數值分解
題目 描述對乙個自然數n 1 n 50 n可以分解成若干個數字 數字可以是1,2,3,9 之和,問題是如何分解能使這些數字的乘積最大。輸入輸入資料有多組,每組佔一行,每行包含乙個自然數n 1 n 50 輸入檔案直到eof為止!輸出對於每組輸入,輸出有2行。第一行是n分解出的所有數字,以空格分隔,最後...
遞推遞迴練習M 數值分解
description 對乙個自然數n 1 n 50 n可以分解成若干個數字 數字可以是1,2,3,9 之和,問題是如何分解能使這些數字的乘積最大。input 輸入資料有多組,每組佔一行,每行包含乙個自然數n 1 n 50 輸入檔案直到eof為止!output 對每組輸入,輸出有2行。第一行是n分解...