黑马程序员技术交流社区
标题: 上网找题做,看到这个题,晕了,求解呀,谢谢 [打印本页]
作者: wangxiaopang 时间: 2016-7-8 23:19
标题: 上网找题做,看到这个题,晕了,求解呀,谢谢
/*欧拉与鸡蛋
大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子。
她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。
欧拉随便问:“卖了多少鸡蛋呢?”
不料一个说:“我们两人自己卖自己的,一共卖了150个鸡蛋,虽然我们卖的鸡蛋有多有少,
但刚好得了同样的钱数。你猜猜看!”
欧拉猜不出。
另一个补充道:“如果我按她那样的价格卖,可以得到32元;如果她按我的价格卖,可以得到24.5元”。
欧拉想了想,说出了正确答案。
我们不是数学家,懒得列出公式来分析。但计算机可以“暴力破解”,
就是把所有可能情况都试验一遍,撞上为止!
请写出每人鸡蛋的数目(顺序不限),用逗号隔开。
*/
作者: FFFF001 时间: 2016-7-9 05:10
不知道有没有错....没有结果出来....
#include <stdio.h>
int main()
{
// 第一个人卖的个数
for(int firstPSEggs = 1;firstPSEggs < 150;firstPSEggs++)
{
// 第二个人卖的个数
for(int secondPSEggs = 1;secondPSEggs < 150;secondPSEggs++)
{
/* 32 / 第二个人的单价 == 第一个人卖的个数
32 / 第一个人卖的个数 == 第二个人的单价 */
double twoUnitPrice = (double)32 / firstPSEggs;
/* 24.5 / 第一个人的单价 == 第二个人卖的个数
24.5 / 第二个人卖的个数 == 第一个人的单价 */
double oneUnitPrice = (double)24.5 / secondPSEggs;
// 虽然我们卖的鸡蛋有多有少,但刚好得了同样的钱数
if (oneUnitPrice * firstPSEggs == twoUnitPrice * secondPSEggs)
{
// 一共卖了150个鸡蛋
if((firstPSEggs + secondPSEggs) == 150)
{
printf("第一个人卖了:%d个\n", firstPSEggs);
printf("第二个人卖了:%d个\n", secondPSEggs);
}
}
}
}
return 0;
}
作者: 不想长大 时间: 2016-7-11 01:10
我看着就晕了
作者: 爷^周晨 时间: 2016-7-11 18:27
好吧,才有点思路,看了半天
作者: gdutyong 时间: 2016-7-23 14:15
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- //for遍历,i为第一个农妇卖出去的鸡蛋
- for (int i=1;i<=150;i++) {
- //逻辑关系,利用两个卖出去的钱相等,并且第一个以第二个的价钱卖得到32,第一个以第二个的价钱卖得到24.5
- //则可以列出(money/i)第一个农妇的单价*(150-i)第二个农妇个数=24.5,整理一下可以得到 money=i*(24.5/(150-i);同理可以得到money=(150-i)*(32.0/i);
- if ((150-i)*(32.0/i)==i*(24.5/(150-i))) {
- NSLog(@"第一个农妇卖出的鸡蛋个数为%d,第二个农妇卖出的鸡蛋个数为%d",i,150-i);
- //2016-07-23 14:14:42.706 hh[662:52946] 第一个农妇卖出的鸡蛋个数为80,第二个农妇卖出的鸡蛋个数为70
- };
-
-
- }
- }
- return 0;
- }
复制代码
作者: wc88212 时间: 2016-7-23 21:10
- c语言解法,这题不难,重点是把握两个人卖的钱一样这样一个连接点,其他的就是穷举式查找
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- // insert code here...
-
-
- for(int i = 1;i<150;i++)
- {
- for(int j = 1;j<150;j++)
- {
- if((i*(32.0/(150-i)))==(j*(24.5/(150-j)))) printf("%d,%d",i,j);
- }
- }
- return 0;
- }
复制代码
作者: 悄然林静 时间: 2016-7-23 22:49
二元一次方程组吧,然后用for循环遍历150
作者: jilaiyuan 时间: 2016-7-24 00:19
好简洁!
作者: hanmaoChen 时间: 2016-7-25 11:59
这个不对吧,你没有用到i+j=150的已知条件,而且用不着两个循环
作者: wc88212 时间: 2016-7-26 22:25
间接使用到了,I和J设为两个人有可能卖的蛋,穷举是种思路,如果数学不错,可以尝试用方程式去推,但一来消耗时间,二来的话,这个双重循环的穷举没有很消耗内存,32除以150-I代表一个人的单价,24.5除以150-j代表另一个人的单价,单价乘以个数,等于两人卖的钱,两人卖的钱相等,则意味着I和J这两个变量被找到了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |