大數學家歐拉在集市上遇到了本村的兩個農婦,每人跨著個空籃子。她們和歐拉打招呼說兩人剛剛賣完了所有的雞蛋。
歐拉隨便問:“賣了多少雞蛋呢?”
不料一個說:“我們兩人自己賣自己的,一共賣了150個雞蛋,雖然我們賣的雞蛋有多有少,但剛好得了同樣的錢數。你猜猜看!”
歐拉猜不出。
另一個補充道:“如果我按她那樣的價格賣,可以得到32元;如果她按我的價格賣,可以得到24.5元”。
歐拉想了想,說出了正確答案。
?
我們不是數學家,懶得列出公式來分析。但計算機可以“暴力破解”,就是把所有可能情況都試驗一遍,撞上為止!
請寫出每人雞蛋的數目(順序不限),用逗號隔開。
?
答案寫在“解答.txt”中,不要寫在這里!???
?
參考答案:
70,80 或 80,70
解題思路:
枚舉。但是需要注意的是 中間過程涉及到小數的得到最終結果的兩個數比較是否相等,會出問題。比如,下面的代碼:
#include <iostream>
using namespace std;int anum,bnum;
double aprice,bprice;int main()
{for(anum=1;anum<150;anum++){bnum=150-anum;bprice=32.0/anum; //涉及到小數的保留 aprice=24.5/bnum;if(anum*aprice==bnum*bprice){cout<<anum<<" "<<bnum<<endl;}}return 0;
}
結果這個程序什么也不輸出。
換一種思路,把小數比較換做整數比較,即不進行小數計算, 上面的比較可以換成 anum*24.5/bnum和 bnum*32/anum的比較, 即 相除,即比較分子分母是否相等就可以了,即比較 ?320*bnum*bnum ?和 245*anum*anum是否相等即可。
代碼:
#include <iostream>
using namespace std;
int anum,bnum;int main()
{for(anum=1;anum<150;anum++){bnum=150-anum;if(320*bnum*bnum==245*anum*anum){cout<<anum<<" "<<bnum<<endl;}}return 0;
}