幻林

导航

第二题:五个正整数之和为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<<" "<

posted on 2010-06-29 23:55  幻林  阅读(324)  评论(0)    收藏  举报