问题:
大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子。她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。
欧拉随便问:“卖了多少鸡蛋呢?”
不料一个说:“我们两人自己卖自己的,一共卖了150个鸡蛋,虽然我们卖的鸡蛋有多有少,但刚好得了同样的钱数。你猜猜看!”
欧拉猜不出。
另一个补充道:“如果我按她那样的价格卖,可以得到32元;如果她按我的价格卖,可以得到24.5元”。
欧拉想了想,说出了正确答案。
我们不是数学家,懒得列出公式来分析。但计算机可以“暴力破解”,就是把所有可能情况都试验一遍,撞上为止!
请写出每人鸡蛋的数目(顺序不限),用逗号隔开。代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int x,y;
float q1,q2;
for(x=1; x<150; x++)
{
y=150-x;
q2=32.0/x;
q1=24.5/y;
if(fabs(x*q1-y*q2)<0.000001)
{
printf("%d,%d",x,y);
printf("\n");
}
}
return 0;
}
运行结果:
小结:
这个程序最好不要直接爆搜,先找出各变量之间的关系,然后再穷举,提高效率。