弋小草 发表于 2022-6-2 12:45:08

关于一个数学问题的求解

本帖最后由 弋小草 于 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上实现也不是不可以{:5_108:} .

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

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

print(big, small) # 输出结果

傻眼貓咪 发表于 2022-6-2 13:02:33

本帖最后由 傻眼貓咪 于 2022-6-2 13:09 编辑

你的思路:import math
w = 10.3
x = 2.5
y = .5

big = 0
small = 0

while True:
        if w - x < 0:
                break
        big += 1
        w -= x
       
while w > 0:
        small += 1
        w -= y

print(big, small)
我的思路:import math
w = 10.3
x = 2.5
y = .5

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

print(big, small)

森亦简 发表于 2022-6-2 13:03:39

本帖最后由 森亦简 于 2022-6-2 13:39 编辑

x = float(input("请输入沙子的总重量(单位:吨):"))
bigcar = 0
smallcar = 0

while x>=2.5 :
    x-=2.5
    bigcar+=1

while x>0.5 :
    x-=0.5
    smallcar+=1

if not x == 0:
    smallcar+=1

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


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

if x%2.5 == 0.0:
    bigcar = x/2.5
if x%2.5>0.5:
    bigcar = x//2.5
    x= x%2.5
    if x%0.5 == 0:
      smallcar = x/0.5
    else:
      smallcar = x//0.5 + 1
if x%2.5<=0.5 and x%2.5 != 0 :
    bigcar = x//2.5
    smallcar = 1

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

弋小草 发表于 2022-6-2 15:46:02

{:10_245:}你们都是神吗?我自己爬代码这么长时间还完全没有头绪,你们把答案都写出来了?!{:10_245:}

弋小草 发表于 2022-6-2 15:58:06

森亦简 发表于 2022-6-2 13:03
或者用除法的思想,可能计算的快点

非常感谢前辈的回复.

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

再一次感谢您的答案.

森亦简 发表于 2022-6-2 17:38:23

弋小草 发表于 2022-6-2 15:58
非常感谢前辈的回复.

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

哈哈哈,没事,我也是新手没学多久。大家互相交流,共同进步{:5_109:}

森亦简 发表于 2022-6-2 17:39:38

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

怎么爬代码?{:5_94:}

弋小草 发表于 2022-6-3 09:04:40

森亦简 发表于 2022-6-2 17:39
怎么爬代码?

哈哈哈,趴着写代码,简称"趴代码"...
页: [1]
查看完整版本: 关于一个数学问题的求解