第二题:五个正整数之和为23
题目:已知五个互不相同的正整数之和为23,且从这五个数中挑选若干个加起来可以表示从1到23之内的全部自然数。问这五个数是什么?
#include
void main()
{
int a,b,c,d,e,i,j,k,m,n,x,count=0,f=0;
for(a = 1; a <= 23; a++) /*f:分解的5个数可以表示出1~23的标记*/
for(b = a + 1 ; b <= 23 - a; b++)
for ( c = b + 1; b <= 23 - a - b; c++)
for(d = c + 1; d <= 23 - a - b - c; d++)
{
if((e = 23 - a - b - c - d ) > d) /*将23分解为a,b,c,d,e五个数*/
{
f = 1;
if((e=23-a-b-c-d)>d) /*判断5个数可否表示1~23*/
for(f = 0, x = 1; x < 24 && !f;x++)
for(f = 1,i = 0; i < 2 && f; i++ )
for(j = 0 ; j < 2 && f; j++)
for(k = 0; k < 2 && f; k++)
for(m = 0; m < 2 && f;m++)
for(n = 0; n < 2 && f;n++)
if(x == (a*i + b*j + c*k + d*m + e*n)) /*穷举5个数的全部取舍*/
f = 0;
if(!f)
cout<<++count<<" "<
浙公网安备 33010602011771号