69,371
社区成员
发帖
与我相关
我的任务
分享
#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);
}
}
//求从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;
}