魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 111130|回复: 14
打印 上一主题 下一主题

求助一道题 [复制链接]

Rank: 1

积分
29
帖子
18
精华
0
UID
49091
性别
保密
跳转到指定楼层
1#
发表于 2009-3-20 19:54:27 |只看该作者 |倒序浏览
三数相乘和想加都得7.11,三数都是0.01的整数倍,求这三数是多少??

原题是这样的,某人去seven eleven买东西,开始售货员算错了,把三件物品的价格相乘了,得出来结果是7.11元,后来售货员发现问题,把三个数相加,得出结果来还是7.11元,问这三件物品分别是多少钱?

[ 本帖最后由 suntong0102 于 2009-3-22 16:19 编辑 ]

Rank: 2

积分
373
帖子
297
精华
0
UID
26372
性别
2#
发表于 2009-3-20 20:04:55 |只看该作者
好像不存在这样的3个数吧

使用道具 举报

Rank: 3Rank: 3

积分
857
帖子
655
精华
7
UID
35724
性别
兴趣爱好
收藏

八年元老

3#
发表于 2009-3-20 20:17:50 |只看该作者
貌似找不到。

                for (int i = 1; i < 710; i++)
                        for (int j = 1; j < 710; j++)
                                for (int k = 1; k < 710; k++)
                                        if ((i+k+j == 711) && (i*k*j == 711000000))
                                        {
                                                System.out.print(“Found”);
                                        }                                       
无输出,呵呵

使用道具 举报

Rank: 4

积分
1194
帖子
924
精华
6
UID
44804
性别
保密
4#
发表于 2009-3-21 11:07:44 |只看该作者
3# 的
   i*k*j == 711000000
上述多了两个0。
应该是
i+j+k=711
i*j*k=7110000=2^4 * 3^2 * 5^4 * 79

使用道具 举报

Rank: 3Rank: 3

积分
909
帖子
775
精华
0
UID
40315
性别
5#
发表于 2009-3-21 11:15:27 |只看该作者
一个数学定理:  
  N个正数之和固定,设为SUM,则这N个正数的积的值域为:   (0,(SUM/N)^N   ].当且仅当这N个数相等时取得最大值。  
  利用这个定理就很容易解决了(你要了解它的精髓)。  
  另外一点要知道的:  
                      方程组:   x   +   y   ==   a   ;   x   *   y   =   b   ;   
                      的解是:   x   =   (a   +   sqrt   (   a   *   a   -   4   *   b   )   )   /2;  
                                        y   =   (a   -   sqcrt   (   a   *   a   -   4   *   b   )   )   /2;  
  将问题扩展:有N个正数和为SUM,积为PROD,求这N个正数的一组解。  
  函数定义:bool   my_func(const   double   sum,  
                                                const   double   prod,  
                                                const   unsigned   int   count   ,  
                                                double*   dest   )   ;  
  返回true代表求得一组解,返回false则代表问题无解。  
  函数的实现如下:  
  一个数学定理:  
  N个正数之和固定,设为SUM,则这N个正数的积的值域为:   (0,(SUM/N)^N   ].当且仅当这N个数相等时取得最大值。  
  利用这个定理就很容易解决了(你要了解它的精髓)。  
  另外一点要知道的:  
                      方程组:   x   +   y   ==   a   ;   x   *   y   =   b   ;   
                      的解是:   x   =   (a   +   sqrt   (   a   *   a   -   4   *   b   )   )   /2;  
                                        y   =   (a   -   sqcrt   (   a   *   a   -   4   *   b   )   )   /2;  
  将问题扩展:有N个正数和为SUM,积为PROD,求这N个正数的一组解。  
  函数定义:bool   my_func(const   double   sum,  
                                                const   double   prod,  
                                                const   unsigned   int   count   ,  
                                                double*   dest   )   ;  
  返回true代表求得一组解,返回false则代表问题无解。  
  函数的实现如下:  
  #include   <stdio.h>  
  #include   <math.h>  
  #include   <iostream.h>  
   
  bool   my_func(const   double   sum,  
                            const   double   prod,  
                            const   unsigned   int   count   ,  
                            double*   dest   )   
  {  
          if(   count   <   2   )   return   false;  
          double   average   =   sum   /   count   ;  
          if(   prod   >   pow(average,count)   )   return   false;  
          for(int   i   =   0;   i   <   count   -2;   ++i   )   dest   =   average;  
           
          double   x   ,   y   ,   a   ,   b   ;     //利用上面方程组的解  
          a   =   average   *   2;  
          b   =   prod   /   pow(average,count   -   2   );  
          x   =   (a   +   sqrt   (   a   *   a   -   4   *   b   )   )   /2;   
          y   =   (a   -   sqrt   (   a   *   a   -   4   *   b   )   )   /2;  
           
          dest[count   -   2]   =   x;  
          dest[count   -   1]   =   y;  
           
          return   true;  
  }  
  int   main(int   argc,   char*   argv[])  
  {  
          double   dest[4];  
          double   sum   =   7.11;  
          double   prod   =   7.11;  
          bool   suc   =   my_func(sum,prod,4,dest);  
          if(suc){  
                  cout<<"calc   success:\n       ";  
                  for(int   i   =   0;   i   <   4;   ++i){  
                          cout<<   dest<<"\n       "   ;  
                  }  
          }else{  
                  cout<<"unsulve!   \n";  
          }  
          return   0;  
  }  
  测试已通过。  
  calc   success:  
        1.7775  
        1.7775  
        2.731  
        0.824004
我结婚了,别打我主意

使用道具 举报

Rank: 1

积分
29
帖子
18
精华
0
UID
49091
性别
保密
6#
发表于 2009-3-21 15:53:33 |只看该作者

回复 3# 的帖子

恩,貌似多了两个零的

使用道具 举报

Rank: 2

积分
373
帖子
297
精华
0
UID
26372
性别
7#
发表于 2009-3-21 19:06:29 |只看该作者
原帖由 cfmake 于 2009-3-21 11:15 发表
一个数学定理:  
  N个正数之和固定,设为SUM,则这N个正数的积的值域为:   (0,(SUM/N)^N   ].当且仅当这N个数相等时取得最大值。  
  利用这个定理就很容易解决了(你要了解它的精髓)。  
  另外一点要知道的 ...


楼主的问题是3个数,而且每个数是0.01的整数倍,而且您的4个数加起来是7.110004

使用道具 举报

Rank: 3Rank: 3

积分
857
帖子
655
精华
7
UID
35724
性别
兴趣爱好
收藏

八年元老

8#
发表于 2009-3-21 20:06:52 |只看该作者
汗,这么大年纪还粗心。
不过貌似去掉两个0也找不到结果。

使用道具 举报

红魔

沉沦一生

Rank: 4

积分
2607
帖子
2298
精华
3
UID
34403
性别

六年元老

9#
发表于 2009-3-21 20:23:44 |只看该作者
貌似得解不定方程~~~~
I'm sure you'll do what you have to!

使用道具 举报

Rank: 4

积分
1194
帖子
924
精华
6
UID
44804
性别
保密
10#
发表于 2009-3-22 12:30:01 |只看该作者
确实无解。楼主可能哪里出错了

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2025-3-1 03:08

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部