鱼C论坛

 找回密码
 立即注册
查看: 5263|回复: 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]



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

本帖被以下淘专辑推荐:

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

使用道具 举报

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

回帖奖励 +1 鱼币

这不是NOIP的真题嘛~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +1 鱼币

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

  5. def mycost(x):
  6.     x_price = int(x.split(" ")[1])
  7.     x_num = int(x.split(" ")[0])
  8.     if pencilnum % x_num == 0:
  9.         nums = pencilnum // x_num
  10.     else:
  11.         nums = pencilnum // x_num + 1
  12.     cost = nums*x_price
  13.     return cost

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

  15. print(f"{mincost}")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +1 鱼币

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

使用道具 举报

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

回帖奖励 +1 鱼币

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

使用道具 举报

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

回帖奖励 +1 鱼币


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

使用道具 举报

发表于 2022-11-16 06:14:16 | 显示全部楼层
打卡学习~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-16 07:03:27 | 显示全部楼层
打卡学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-17 00:04:58 | 显示全部楼层
  1. from math import ceil

  2. nump = int(input()) #需要的铅笔数量
  3. a = input()
  4. b = input()
  5. c = input()

  6. def cost(x):
  7.     x_price = int(x.split(" ")[1])
  8.     x_num = int(x.split(" ")[0])
  9.     nums = ceil(nump/x_num)  #ceil(x)返回 x 参数向上取整后的结果
  10.     cost = nums*x_price
  11.     return cost

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

复制代码
小甲鱼最新课程 -> https://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}块")

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 23:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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