免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5132 | 回复: 14
打印 上一主题 下一主题

数学难题,还没找到合适的方法解答,数学好的兄弟帮帮忙 [复制链接]

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-10-09 06:20:00操作系统版块每日发帖之星
日期:2015-10-20 06:20:00IT运维版块每日发帖之星
日期:2015-11-03 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-05 13:24 |只看该作者 |倒序浏览
30可用积分
问题:有二根蜡烛,长短相同,但粗细不同。粗8小时烧完,细5小时烧完。问二根同时燃烧,经过多少小时后,粗者剩下的长度是细者剩下长度的3倍.


我试着用perl解答,但一直是无限循环.
#!c:/Perl/bin/perl.exe -w
$a=8;  //粗者
$b=5;  //细者
$x=3;  //预先设定粗是细的倍数
if ($b / $a !=$x) {      //判断粗是细的3倍,条件是真,执行下一步,粗、细每次分别循环减少0.1小时,直到粗除细等于3.
        $a -0.1;
        $b -0.1;
        print "$b,$a\n";
}


小弟不才,想了一晚上,一直没想到好的方法解答。希望大家帮帮忙

我的思路:
粗蜡烛:8小时;细蜡烛:5小时. 如果粗除细不等于3,则粗与细每次减少0.1小时,直到粗是细的3倍
第一次:8/5
第二次:7.9/4.9
第三次:7.8/4.8
第N次:.......

[ 本帖最后由 3645636 于 2008-11-5 14:13 编辑 ]

最佳答案

查看完整内容

用perl写了一个其实就是一个一元一次方程, 手解的话为 80/19

论坛徽章:
0
2 [报告]
发表于 2008-11-05 13:24 |只看该作者
用perl写了一个

  1. #!/usr/bin/perl -w
  2. $hour=0;

  3. while ($hour <= 8)
  4. {
  5.         $hour = $hour + 0.01;
  6.         $diff = (1 - 1/8 * $hour) - 3 * (1 - 1/5 * $hour);
  7.         if (($diff<0.001) && ($diff > -0.001))
  8.         {
  9.                 print "time is $hour\n";
  10.                 last;
  11.         }
  12. }

复制代码

其实就是一个一元一次方程, 手解的话为 80/19

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2008-11-05 13:55 |只看该作者
原帖由 3645636 于 2008-11-5 13:24 发表
问题:有二根蜡烛,长短相同,但粗细不同。粗8小时烧完,细5小时烧完。问二根同时燃烧,经过多少小时后,粗者剩下的长度是细者剩下长度的3倍.


我试着用perl解答,但一直是无限循环.
#!c:/Perl/bin/perl.e ...


用perl解一元一次方程?

论坛徽章:
0
4 [报告]
发表于 2008-11-05 13:57 |只看该作者
不知道楼主什么意思,是要用程序写出来吗?
直接拿数学表达式不就算出来了吗,假设燃烧的速度是保持不变的的话,设x小时后,粗者剩下的长度是细者剩下长度的3倍
3*(5-x)/5=(8-x)/8     :因为初始长度是相同的

论坛徽章:
0
5 [报告]
发表于 2008-11-05 14:01 |只看该作者
楼主你就是减少也应该这样啊
$b=$b-0.1
$a=$a-0.1

论坛徽章:
0
6 [报告]
发表于 2008-11-05 14:03 |只看该作者
长度为 x , 粗的燃烧速度为 x/8, 细的 x/5

设时间为 t 有:
x-xt/8 = 3(x-xt/5)

约去 x 得到 1-t/8=3(1-t/5)

解之有 t=80/19

maxima:

  1. (%i4) solve(1-t/8=3*(1-t/5),t);
  2.                                               80
  3. (%o4)                              [t = --]
  4.                                               19
复制代码

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-10-09 06:20:00操作系统版块每日发帖之星
日期:2015-10-20 06:20:00IT运维版块每日发帖之星
日期:2015-11-03 06:20:00
7 [报告]
发表于 2008-11-05 14:06 |只看该作者
答案有没有用perl解答出来的, 兄弟们,帮帮忙吧,用perl解

论坛徽章:
0
8 [报告]
发表于 2008-11-05 14:06 |只看该作者
原帖由 3645636 于 2008-11-5 13:24 发表
问题:有二根蜡烛,长短相同,但粗细不同。粗8小时烧完,细5小时烧完。问二根同时燃烧,经过多少小时后,粗者剩下的长度是细者剩下长度的3倍.


我试着用perl解答,但一直是无限循环.
#!c:/Perl/bin/perl.e ...

LZ,这个如果直接用数学方程解的小时是个有理数,但是不是0.1的倍数。所以你以0.1为单位循环自然不会出现粗的是细的3倍。
如果只是精确到0.1,(还是用0.1为单位循环的话)那么只能通过判断某个时刻两根蜡烛的长度比跟3最为接近,取这个时刻的值。

论坛徽章:
0
9 [报告]
发表于 2008-11-05 14:07 |只看该作者
楼主你的思路有问题

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-10-09 06:20:00操作系统版块每日发帖之星
日期:2015-10-20 06:20:00IT运维版块每日发帖之星
日期:2015-11-03 06:20:00
10 [报告]
发表于 2008-11-05 14:10 |只看该作者
原帖由 scutan 于 2008-11-5 14:07 发表
用perl写了一个

#!/usr/bin/perl -w
$hour=0;

while ($hour  



运行结果
C:\Documents and Settings\Administrator>c:\sys.pl
time is 4.20999999999995
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP