鱼C论坛

 找回密码
 立即注册
查看: 3282|回复: 3

如何用python解决这个小学数学题

[复制链接]
发表于 2014-6-4 14:31:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天早上被一个朋友在QQ上问了一下小学数学题(也是公务员考试题),突然想用编程语言来解决一下这个问题。

问题的题目是这样的:
甲、乙两人在长30米的泳池内游泳,甲每分钟游37.5米,乙每分钟游52.5米,两人同时分别从泳池的两端出发,触壁后原路返回,如是往返。如果不计转向的时间,则从出发开始计算的1分50秒内两人共相遇了多少次?

首先考虑用C语言去解决这个问题,问题的关键在于怎么判定两个人是相遇了。仔细思考,可以分为两种情况,相遇与追击。
1. 相遇的话,可以理解称为两个人在本段内总共游过的路程相加等于30,或者是30的倍数,if((甲_里程 + 乙_里程)% 30  == 0)。
2. 追击的话,可以转变为速度快的人,比速度慢的人多走一个全程即30米,判定某时刻 甲_里程 + 30 = 乙_里程即可。

为了保证精确性,所有变量采用了浮点型。在编译的时候,发现C语言中,%运算符是不能对浮点数进行操作的。

故改用python,改写之后,发现所得结果与数学计算结果不同。数学运算结果应该为3,但是python代码计算为5.

下面附上C语言和python的代码,请大家帮我研究一下。
  1. double a_speed = 0.625,b_speed = 0.875;
  2.         double a_lc = 0,b_lc = 0;
  3.         int meet_time = 0;
  4.         double lc = 0;
  5.         printf("甲_速度 = %f\n",a_speed);
  6.         printf("乙_速度 = %f\n",b_speed);
  7.         printf("经过计算\n");
  8.         for (int i=0;i<110;i++)
  9.         {
  10.                 a_lc += a_speed;
  11.                 b_lc += b_speed;
  12.                 lc = a_lc + b_lc;
  13.                 double temp;
  14.                 temp = lc % 30.0;
  15.                 if (!temp)
  16.                 {
  17.                         meet_time++;
  18.                 }
复制代码
  1. a_speed = 0.625
  2. b_speed = 0.875
  3. print "甲的速度为%f",a_speed
  4. print "乙的速度为%f",b_speed
  5. i = 0
  6. a_lc = 0
  7. b_lc = 0
  8. lc = 0
  9. meet_times = 0
  10. for i in range(0,110):
  11.         a_lc = a_speed + a_lc
  12.         b_lc = b_speed + b_lc
  13.         lc = a_lc + b_lc
  14.         if((lc%30) == 0):
  15.                 meet_times = meet_times + 1
  16.        
  17. print "相遇的次数为$d",meet_times
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-5 22:45:55 | 显示全部楼层
楼主,你这代码写的跟你想的其实不太一样,
你for i in range(0,110):
是想表达时间吧?但是时间应该是累加的呀。
A = 0.625
B = 0.875
length = 30
count = 0
time = 110
alltime = 0
while alltime <= 110:
    if length % (A+B) == 0:
        temp = length / (A+B)
        alltime = temp + alltime
        length += 30
        count += 1
print(count)

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
~风介~ + 5 + 5 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-6 13:43:12 | 显示全部楼层
楼主的头像是亮点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-5 10:53:41 | 显示全部楼层
我先做下测试看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-2 14:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表