ABCDE5个人卖报纸 A卖了全部的4/1 多一张 B卖了盛下的4/1多一张 C卖了剩下的4/1多一张 D卖了4/1多张一张 剩下的都被E卖了 A+C-(B+D)=100 一共多少张报纸 每人卖了多少张?
#include "stdio.h"
void main()
{
int all,a,b,c,d,e;
int i;
for(i=0;i<=5000;i=i+16)
{
a=i/4;
b=(i-a)/4+1;
c=(i-b)/4+1;
d=(i-c)/4+1;
if((a+c-(b+d))==100)
{
e=i-(a+b+c+d);
printf("all:%d\n",i);
printf("a=%d ,b=%d ,c=%d ,d=%d ,e=%d\n",a,b,c,d,e);
}
}
getch();
}
其中c=(i-b)/4+1; 为什么不是 c=(i-a-b)/4+1
參考答案:用给出的代码得到的结果为:
all:1520
a=380 ,b=286 ,c=309 ,d=303 ,e=242
all:1536
a=384 ,b=289 ,c=312 ,d=307 ,e=244
显然不对。
#include "stdio.h"
int foo (int i,int j)
{
if ( (i=(j+1)/3) == (j+1.)/3. )
return 1;
else return 0;
}
int main()
{
int a,b,c,d,e;
for (e=2;;++e) {
if (foo(d,e))
d=(e+1)/3*4;
if (foo(c,d))
c=(d+1)/3*4;
if (foo(b,c))
b=(c+1)/3*4;
if (foo(a,b)) {
a=(b+1)/3*4;
a=a-b;
b=b-c;
c=c-d;
d=d-e;
if (a+c-b-d == 100)
break;
}
}
printf ("all is %d\n",a+b+c+d+e);
printf ("%i %i %i %i %i",a,b,c,d,e);
return 0;
}
all is 1020
256 192 144 108 320
写得不好,但结果是对的。