鱼C论坛

 找回密码
 立即注册
查看: 3744|回复: 9

[学习笔记] 【简单数学小问题8】买铅笔

[复制链接]
发表于 2022-11-13 00:08:57 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 无理想的闲鱼 于 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

回复即可查看答案

游客,如果您要查看本帖隐藏内容请回复

[/hide]



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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-14 14:33:48 | 显示全部楼层

回帖奖励 +1 鱼币

这不是NOIP的真题嘛~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-14 15:32:55 | 显示全部楼层

回帖奖励 +1 鱼币

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

def mycost(x):
    x_price = int(x.split(" ")[1])
    x_num = int(x.split(" ")[0])
    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}")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-14 15:35:16 | 显示全部楼层

回帖奖励 +1 鱼币

打卡学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 07:53:25 | 显示全部楼层

回帖奖励 +1 鱼币

打卡学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-15 23:17:32 | 显示全部楼层

回帖奖励 +1 鱼币


打卡学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-16 06:14:16 | 显示全部楼层
打卡学习~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-16 07:03:27 | 显示全部楼层
打卡学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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(" ")[1])
    x_num = int(x.split(" ")[0])
    nums = ceil(nump/x_num)  #ceil(x)返回 x 参数向上取整后的结果
    cost = nums*x_price
    return cost

print(f"{min(cost(a),cost(b),cost(c))}")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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}块")

有点长 但这个是我第一个想到的方法了

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 15:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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