输入一个数,将这个数分解成几个数相加的形式输出

晨末未阳 2015-01-19 02:10:05
具体:
1=0+1,2=1+1,3=2+1,4=3+1,5=4+1
6=5+0+1,7=5+1+1,8=5+2+1,9=5+3+1,10=5+4+1
11=5+5+0+1,12=5+5+1+1(中间略)15=5+5+4+1
16=5+5+5+0+1
求大神帮忙,万分感谢!
...全文
392 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
michael2988 2015-01-19
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
    int iNum = 0;
    int nFive = 0, nRest = 0;
    int i = 0;
    while (true)
    {
        printf("Enter a number(0 to exit):\n");
        scanf("%d", &iNum);
        if (0 == iNum)
        {
            break;
        }

        printf("%d=", iNum);

        nFive = (iNum - 1) / 5;
        for (i = 0; i < nFive; i++)
        {
            printf("%d+", 5);
        }
        nRest = iNum - nFive * 5;
        printf("%d+%d\n", nRest - 1, 1);
    }
}
赵4老师 2015-01-19
  • 打赏
  • 举报
回复
仅供参考:
//求从Begin到End的正整数中挑出任意个数使其总和为Sum的所有方案
#include <stdio.h>
int Begin,End,Sum;
int j;
int o[1000];
long n;
void combsum(int b,int e,int s,int d) {
    int i;

    if (e>s) e=s;
    for (i=e;i>=b;i--) {
        if ((i+b)*(i-b+1)/2<s) break;
        o[d]=i;
        if (s-i<=0) {
            n++;
            printf("%8ld:",n);
            for (j=0;j<=d;j++) printf("%d ",o[j]);
            printf("\n");
        } else {
            if (d+1<1000) combsum(b,i-1,s-i,d+1);
            else {
                printf("Error:Too deep.\n");
                return;
            }
        }
    }
}
int main() {
    printf("Input Begin,End,Sum:");fflush(stdout);
    scanf("%d,%d,%d",&Begin,&End,&Sum);
    n=0L;
    combsum(Begin,End,Sum,0);
    printf("Total:%ld\n",n);
    return 0;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧