鱼C论坛

 找回密码
 立即注册
查看: 1515|回复: 7

[已解决]关于一个数学问题的求解

[复制链接]
发表于 2022-6-2 12:45:08 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 弋小草 于 2022-6-5 14:55 编辑

各位大佬大家好,今天遇到一个问题,思考良久还是没有得到心中的答案,所以来跟大家请教一下.

问题如下:
        工地有一堆沙子,大车一次能拉2.5吨,小车一次能拉0.5吨,现在需要输入一个数字之后就知道这堆沙子用几辆大车几辆小车能拉完.

比方说,有10.3吨沙子,这时候就需要4辆大车和1辆小车.

我的解题思路是X-2.5,减一次就给A+1,直到X为负数之后停止,然后剩下的数字为Y;接着用Y-0.5,循环直到负数.
以上X是沙子总重量,Y为整数大车拉完之后剩余的重量,X=0,Y=1.

我知道我这个思路肯定不是最好的解题思路,毕竟我的编程知识还很匮乏,很多骚操作还完全不知道,毕竟小甲鱼老师的课我才上了三节.

不多说什麽了,我先按我的思路看看能不能写个代码出来,各位大佬如果有更好的方法还请不吝赐教.

另外如果这个运算有什么方法在Excel上实现也不是不可以 .

2022年6月5日追记:
        之前得到大佬的答案,无奈因本人基础太差,虽然简单的得到想要的结果,但是实在不知道是怎么得到这样的结果的,所以自己又做了点功课,把代码全部加上了注释,万一有跟我一样看不懂的朋友,希望可以给予一些帮助.
  1. import math # 载入数学模块
  2. w = 10.3 # 赋值
  3. x = 2.5 # 赋值
  4. y = .5 # 赋值

  5. big = int(w // x) # int取w除以x答案的整数
  6. small = math.ceil((w % x) / y) #(w % x)为取模运算,就是返回除法运算的余数;数学模块math.ceil为向上舍入到最接近的整数

  7. print(big, small) # 输出结果
复制代码
最佳答案
2022-6-2 13:02:33
本帖最后由 傻眼貓咪 于 2022-6-2 13:09 编辑

你的思路:
  1. import math
  2. w = 10.3
  3. x = 2.5
  4. y = .5

  5. big = 0
  6. small = 0

  7. while True:
  8.         if w - x < 0:
  9.                 break
  10.         big += 1
  11.         w -= x
  12.        
  13. while w > 0:
  14.         small += 1
  15.         w -= y

  16. print(big, small)
复制代码

我的思路:
  1. import math
  2. w = 10.3
  3. x = 2.5
  4. y = .5

  5. big = int(w // x)
  6. small = math.ceil((w % x) / y) # 向上取整

  7. print(big, small)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-2 13:02:33 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2022-6-2 13:09 编辑

你的思路:
  1. import math
  2. w = 10.3
  3. x = 2.5
  4. y = .5

  5. big = 0
  6. small = 0

  7. while True:
  8.         if w - x < 0:
  9.                 break
  10.         big += 1
  11.         w -= x
  12.        
  13. while w > 0:
  14.         small += 1
  15.         w -= y

  16. print(big, small)
复制代码

我的思路:
  1. import math
  2. w = 10.3
  3. x = 2.5
  4. y = .5

  5. big = int(w // x)
  6. small = math.ceil((w % x) / y) # 向上取整

  7. print(big, small)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-2 13:03:39 | 显示全部楼层
本帖最后由 森亦简 于 2022-6-2 13:39 编辑
  1. x = float(input("请输入沙子的总重量(单位:吨):"))
  2. bigcar = 0
  3. smallcar = 0

  4. while x>=2.5 :
  5.     x-=2.5
  6.     bigcar+=1

  7. while x>0.5 :
  8.     x-=0.5
  9.     smallcar+=1

  10. if not x == 0:
  11.     smallcar+=1

  12. print("需要大车{}辆,小车{}辆".format(bigcar,smallcar))
复制代码


或者用除法的思想,可能计算的快点
  1. x = float(input("请输入沙子的总重量(单位:吨):"))
  2. bigcar = 0
  3. smallcar = 0

  4. if x%2.5 == 0.0:
  5.     bigcar = x/2.5
  6. if x%2.5>0.5:
  7.     bigcar = x//2.5
  8.     x= x%2.5
  9.     if x%0.5 == 0:
  10.         smallcar = x/0.5
  11.     else:
  12.         smallcar = x//0.5 + 1
  13. if x%2.5<=0.5 and x%2.5 != 0 :
  14.     bigcar = x//2.5
  15.     smallcar = 1

  16. print("需要大车{}辆,小车{}辆".format(int(bigcar),int(smallcar)))

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-2 15:46:02 | 显示全部楼层
你们都是神吗?我自己爬代码这么长时间还完全没有头绪,你们把答案都写出来了?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-2 15:58:06 | 显示全部楼层
森亦简 发表于 2022-6-2 13:03
或者用除法的思想,可能计算的快点

非常感谢前辈的回复.

其实您和二楼的答案我都很佩服,特别是您的答案还可以直接更改数据,更据实际意义.但是本着极简为王的概念,我选择了二楼的第二个答案作为最佳答案,毕竟他用最少得代码完成了这个目标.

再一次感谢您的答案.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-2 17:38:23 | 显示全部楼层
弋小草 发表于 2022-6-2 15:58
非常感谢前辈的回复.

其实您和二楼的答案我都很佩服,特别是您的答案还可以直接更改数据,更据实际意义. ...

哈哈哈,没事,我也是新手没学多久。大家互相交流,共同进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-2 17:39:38 | 显示全部楼层
弋小草 发表于 2022-6-2 15:46
你们都是神吗?我自己爬代码这么长时间还完全没有头绪,你们把答案都写出来了?!

怎么爬代码?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-3 09:04:40 | 显示全部楼层

哈哈哈,趴着写代码,简称"趴代码"...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 11:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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