3994 水果派(向上取整转为向下取整)

1. 问题描述:

食堂需要做至少 a 份苹果派和至少 b 份香蕉派。已知,一个苹果可以做 c 份苹果派,一个香蕉可以做 d 份香蕉派。食堂共可以采购不超过 k 个水果。请提供一种食堂采购水果的方案,以满足制作水果派的需求。

输入格式

第一行包含整数 T,表示共有 T 组测试数据。每组数据占一行,包含 5 个整数 a,b,c,d,k。

输出格式

每组数据输出一行结果,如果存在合理方案,则输出两个整数 x,y,表示需要采购的苹果和香蕉数量。如果不存在合理方案,则输出 −1。任意合理方案均可。

数据范围

前三个测试点满足,1 ≤ T ≤ 10。
所有测试点满足,1 ≤ T,a,b,c,d,k ≤ 100。

输入样例:

3
7 5 4 5 8
7 5 4 5 2
20 53 45 26 4

输出样例:

7 1
-1
1 3
来源:https://www.acwing.com/problem/content/3997/

2. 思路分析:

分析题目可以知道制作a份苹果派至少需要⌈a / c⌉个苹果,制作b份香蕉派需要⌈b / d⌉个香蕉,如果他们的和超过了k说明不满足条件输出-1,否则输出至少需要的苹果数和香蕉数,在写代码的时候向上取整可以转换为向下取整,公式为⌈x / k⌉ = (x + k - 1) / k。

3. 代码如下:

class Solution:
    def process(self):
        T = int(input())
        for t in range(T):
            a, b, c, d, k = map(int, input().split())
            t1, t2 = (a + c - 1) // c, (b + d - 1) // d
            # 大于k表示无解
            if t1 + t2 > k:
                print(-1)
            else:
                print(t1, t2)


if __name__ == '__main__':
    Solution().process()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值