数值分解 (sdut oj)

来源:互联网 发布:软件系统架构师 编辑:程序博客网 时间:2024/06/04 19:54


数值分解

Time Limit: 1000MS Memory Limit: 65536KB


Problem Description

对一个自然数N ( 1 <= N <= 50 ) ,N可以分解成若干个数字(数字可以是1,2,3,….,9)之和,问题是如何分解能使这些数字的乘积最大。

Input

输入数据有多组,每组占一行,每行包含一个自然数N(1 <= N <= 50)。输入文件直到EOF为止!

Output

对每组输入,输出有2行。第一行是N分解出的所有数字,以空格分隔,最后一个数字后也有空格;第二行是N分解出的所有数字的个数、乘积。

Example Input

202428

Example Output

3 3 3 3 3 3 27 14583 3 3 3 3 3 3 38 6561 3 3 3 3 3 3 3 3 49 26244

Hint

由数学知识可知,只有把N分成尽可能多的3,它们的乘积才能最大(当只剩下4时不用再分,因为: 4 > 3*1)

Author

 zlh




参考代码



#include<stdio.h>int f(int n){    if( n == 4 || n == 3 || n == 2 || n == 1 )    {        printf("%d ",n);        return 1;    }    else    {       printf("3 ");       return f(n-3)+1;    }}int main(){    int n;    int k,i,m;    while(~scanf("%d",&n))    {       k = 1;       if( n % 3 == 0 )       {           m = n / 3;           for( i = 0; i < m; i++ )           k *= 3;       }       else if( n % 3 == 1 && n > 3 )       {           m = ( n / 3 ) - 1;           for( i = 0; i < m; i++ )           k *= 3;           k *= 4;       }       else if( n % 3 == 2 )       {           m = n / 3;           for( i = 0; i < m; i++ )           k *= 3;           k *= 2;       }       printf("\n%d %d\n",f(n),k);    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宫颈癌前病变1级怎么办 纹身后结痂很厚怎么办 纹身结痂蹭掉了怎么办 药流20天同房了怎么办 药流23天同房了怎么办 小产后不来月经怎么办 人流12天同房了怎么办 人流20天同房了怎么办 人流后5天同房了怎么办 人流后3天同房了怎么办 人流20后同房了怎么办 上环后月经量多怎么办 上环后喝啤酒了怎么办 取环当天同房了怎么办 生完孩子有外痔怎么办 怀孕了宫腔积液怎么办 做完爱4天怕怀孕怎么办 半永久眉失败了怎么办 取环前2天同房了怎么办 怀孕了发现有子宫肌瘤怎么办 宫腔中央性粘连怎么办 孕妇宫腔粘连带怎么办 内膜厚怎么办吃什么好 功血引起的贫血怎么办 吃宫血宁后月经不来了怎么办 孕晚期胎心不好怎么办 胎心不好怎么办让住院 39 5胎心不好怎么办 肺长了一个肿瘤怎么办 血糖高伤口不愈合怎么办 有轻微的狐臭该怎么办 嘴上汗毛太重怎么办 风把裙子吹起怎么办 每天三四点醒来就睡不着怎么办 打游戏手汗太多怎么办 老年人胸闷气短呼吸困难怎么办 冒险岛宠物饿了怎么办 不小心喝了黑墨怎么办 压的双眼皮开了怎么办 割了双眼皮显老怎么办 心脏供血不足怎么办呢