description
對乙個自然數n ( 1 <= n <= 50 ) ,n可以分解成若干個數字(數字可以是1,2,3,….,9)之和,問題是如何分解能使這些數字的乘積最大。
input
輸入資料有多組,每組佔一行,每行包含乙個自然數n(1 <= n <= 50)。輸入檔案直到eof為止!
output
對每組輸入,輸出有2行。第一行是n分解出的所有數字,以空格分隔,最後乙個數字後也有空格;第二行是n分解出的所有數字的個數、乘積。
sample input
20
2428
sample output
3 3 3 3 3 3 2
7 1458
3 3 3 3 3 3 3 3
8 6561
3 3 3 3 3 3 3 3 4
9 26244
hint
由數學知識可知,只有把n分成盡可能多的3,它們的乘積才能最大(當只剩下4時不用再分,因為: 4 > 3*1)
其實一開始我不知道咋處理這個題目,看了hit才知道,主要就是處理4以下和4以上的遞推情況,以及重置計數器的小細節,下面是我的ac**:
#include
#include
usingnamespacestd;
int cnt;
int s;
voidf(
int n)
else
}intmain()
return0
;}
#include
usingnamespacestd;
int cnt;
int s;
voidf(
int n)
else
}intmain()
return0
;}
遞推遞迴練習M 數值分解
description 對乙個自然數n 1 n 50 n可以分解成若干個數字 數字可以是1,2,3,9 之和,問題是如何分解能使這些數字的乘積最大。input 輸入資料有多組,每組佔一行,每行包含乙個自然數n 1 n 50 輸入檔案直到eof為止!output 對每組輸入,輸出有2行。第一行是n分解...
遞推遞迴練習 M 數值分解
description 對乙個自然數n 1 n 50 n可以分解成若干個數字 數字可以是1,2,3,9 之和,問題是如何分解能使這些數字的乘積最大。input 輸入資料有多組,每組佔一行,每行包含乙個自然數n 1 n 50 輸入檔案直到eof為止!output 對每組輸入,輸出有2行。第一行是n分解...
遞推遞迴練習 M 數值分解
題目 description 對乙個自然數n 1 n 50 n可以分解成若干個數字 數字可以是1,2,3,9 之和,問題是如何分解能使這些數字的乘積最大。input 輸入資料有多組,每組佔一行,每行包含乙個自然數n 1 n 50 輸入檔案直到eof為止!output 對每組輸入,輸出有2行。第一行是...