无理想的闲鱼 发表于 2022-11-13 00:08:57

【简单数学小问题8】买铅笔

本帖最后由 无理想的闲鱼 于 2022-11-14 10:36 编辑

题目:
P老师需要去商店买n支铅笔作为小朋友们参加编程比赛的礼物。她发现商店一共有 3 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同种包装的铅笔。商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过 n 支铅笔才够给小朋 友们发礼物现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 n 支铅笔最少需要花费多少钱。

输入描述:
第一行包含一个正整数n,表示需要的铅笔数量。 接下来三行,每行用 2 个正整数描述一种包装的铅笔: 其中第 1 个整数表示这种 包装内铅笔的数量,第 2个整数表示这种包装的价格。 保证所有的 7个数都是不超过 10000 的正整数

输出描述:
1 个整数,表示P老师最少需要花费的钱。

【输入示例】
57
2 2
50 30
30 27
【输出示例】
54

回复即可查看答案

**** Hidden Message *****




我的答案代码很不简洁,欢迎大家写出自己的代码

zhangjinxuan 发表于 2022-11-14 14:33:48

这不是NOIP的真题嘛~

lxping 发表于 2022-11-14 15:32:55

pencilnum = int(input()) #需要的铅笔数量
a = input() #第1个整数表示这种包装内铅笔的数量,第2个整数表示这种包装的价格
b = input() #第1个整数表示这种包装内铅笔的数量,第2个整数表示这种包装的价格
c = input() #第1个整数表示这种包装内铅笔的数量,第2个整数表示这种包装的价格

def mycost(x):
    x_price = int(x.split(" "))
    x_num = int(x.split(" "))
    if pencilnum % x_num == 0:
      nums = pencilnum // x_num
    else:
      nums = pencilnum // x_num + 1
    cost = nums*x_price
    return cost

mincost = min(mycost(a),mycost(b),mycost(c))

print(f"{mincost}")

hellometa 发表于 2022-11-14 15:35:16

打卡学习

1molHF 发表于 2022-11-15 07:53:25

打卡学习

hornwong 发表于 2022-11-15 23:17:32


打卡学习

猪猪以都都 发表于 2022-11-16 06:14:16

打卡学习~~

Dada1 发表于 2022-11-16 07:03:27

打卡学习

lxping 发表于 2022-11-17 00:04:58

from math import ceil

nump = int(input()) #需要的铅笔数量
a = input()
b = input()
c = input()

def cost(x):
    x_price = int(x.split(" "))
    x_num = int(x.split(" "))
    nums = ceil(nump/x_num)#ceil(x)返回 x 参数向上取整后的结果
    cost = nums*x_price
    return cost

print(f"{min(cost(a),cost(b),cost(c))}")

罗天才 发表于 2022-11-24 11:54:16

n =int(input("需要多少铅笔")        )                       
x1=int(input("第一种铅笔的价钱"))
x2=int(input("第一种铅笔的个数"))
y1=int(input("第二种铅笔的价钱"))
y2=int(input("第二种铅笔的个数"))
z1=int(input("第三种铅笔的价钱"))
z2=int(input("第三种铅笔的个数"))
if n>x2:
        if n%x2==0:
               o1=(((n//x2))*x1)
        else:
               o1=(((n//x2)+1)*x1)
else:
        o1=x1
if n>y2:
        if n%y2==0:
                o2=(((n//y2))*y1)
        else:
                o2=(((n//y2)+1)*y1)
else:
        o2=y1
if n>z2:
        if n%z2==0:       
                        o3=(((n//z2))*z1)
        else:       
                        o3=(((n//z2)+1)*z1)
else:
        o3=z1
if o1>o2 and o3>o2:
        print(f"选择第二种,花费了{o2}块")
elif o1>o3 and o2>o3:
        print(f"选择第一种,花费了{o3}块")
elif o2>o1 and o3>o1:
        print(f"选择第一种,花费了{o1}块")

有点长{:10_269:} 但这个是我第一个想到的方法了

页: [1]
查看完整版本: 【简单数学小问题8】买铅笔