73 和數(shù)能表示1~23的5個(gè)正整數(shù)
已知五個(gè)互不相同的正整數(shù)之和為23,且從這五個(gè)數(shù)中挑選若干個(gè)加起來(lái)可以表示從1到23之內(nèi)的全部自然數(shù)。問(wèn)這五個(gè)數(shù)是什么?
*問(wèn)題分析與算法設(shè)計(jì)
從計(jì)算機(jī)程序設(shè)計(jì)的角度來(lái)說(shuō),可以用窮舉法分解23,然后判斷所分解的五個(gè)數(shù)是否可以表示1到23 之間的全部整數(shù)。
*程序與程序注釋
#include
void main()
{
int a,b,c,d,e,i,j,k,l,m,x,count=0,f=0; /*f:分解的5個(gè)數(shù)可以表示出1~23的標(biāo)記*/
printf("There are following possble result:\n");
for(a=1;a<=23;a++) /*將23分解為a,b,c,d,e五個(gè)數(shù)*/
for(b=1+a;b<=23-a;b++)
for(c=1+b;c<=23-a-b;c++)
for(d=1+c;d<=23-a-b-c;d++)
{
f=1;
if((e=23-a-b-c-d)>d)
for(f=0,x=1;x<24&&!f;x++) /*判斷5個(gè)數(shù)可否表示1~23*/
for(f=1,i=0;i<2&&f;i++) /*窮舉5個(gè)數(shù)的全部取舍*/
for(j=0;j<2&&f;j++)
for(k=0;k<2&&f;k++)
for(l=0;l<2&&f;l++)
for(m=0;m<2&&f;m++)
if(x==a*i+b*j+c*k+d*l+e*m) f=0;
if(!f) printf("[%d]: %d %d %d %d %d\n",++count,a,b,c,d,e);
}
}
*運(yùn)行結(jié)果
There are following possble result:
[1]: 1 2 3 5 12
[2]: 1 2 3 6 11
[3]: 1 2 3 7 10
[4]: 1 2 4 5 11
[5]: 1 2 4 6 10
[6]: 1 2 4 7 9
已知五個(gè)互不相同的正整數(shù)之和為23,且從這五個(gè)數(shù)中挑選若干個(gè)加起來(lái)可以表示從1到23之內(nèi)的全部自然數(shù)。問(wèn)這五個(gè)數(shù)是什么?
*問(wèn)題分析與算法設(shè)計(jì)
從計(jì)算機(jī)程序設(shè)計(jì)的角度來(lái)說(shuō),可以用窮舉法分解23,然后判斷所分解的五個(gè)數(shù)是否可以表示1到23 之間的全部整數(shù)。
*程序與程序注釋
#include
void main()
{
int a,b,c,d,e,i,j,k,l,m,x,count=0,f=0; /*f:分解的5個(gè)數(shù)可以表示出1~23的標(biāo)記*/
printf("There are following possble result:\n");
for(a=1;a<=23;a++) /*將23分解為a,b,c,d,e五個(gè)數(shù)*/
for(b=1+a;b<=23-a;b++)
for(c=1+b;c<=23-a-b;c++)
for(d=1+c;d<=23-a-b-c;d++)
{
f=1;
if((e=23-a-b-c-d)>d)
for(f=0,x=1;x<24&&!f;x++) /*判斷5個(gè)數(shù)可否表示1~23*/
for(f=1,i=0;i<2&&f;i++) /*窮舉5個(gè)數(shù)的全部取舍*/
for(j=0;j<2&&f;j++)
for(k=0;k<2&&f;k++)
for(l=0;l<2&&f;l++)
for(m=0;m<2&&f;m++)
if(x==a*i+b*j+c*k+d*l+e*m) f=0;
if(!f) printf("[%d]: %d %d %d %d %d\n",++count,a,b,c,d,e);
}
}
*運(yùn)行結(jié)果
There are following possble result:
[1]: 1 2 3 5 12
[2]: 1 2 3 6 11
[3]: 1 2 3 7 10
[4]: 1 2 4 5 11
[5]: 1 2 4 6 10
[6]: 1 2 4 7 9