其他分享
首页 > 其他分享> > ECNU 2143 端午节快乐

ECNU 2143 端午节快乐

作者:互联网

ECNU 2143 端午节快乐

链接

https://acm.ecnu.edu.cn/problem/2143

题目

单点时限: 2.0 sec

内存限制: 256 MB

今天是端午节,ECNU 决定请大家吃粽子。恰好,今天超市为了迎合 ” 端午节 “,推出了 ” 端午大酬宾 “,即促销活动。严格的买三送一,买五送二。

ECNU 想用现有的钱,买最多的粽子,但是他自己又不会算,所以希望你能帮帮他。

输入格式
输入第一行为一个数 , 表示测试数据的组数。

每组测试数据有两个整数, 表示 ECNU 有 元钱,每个粽子价格为 元钱,超市推出了买 5 个送 2 个,和买 3 个送 1 个的活动。

输出格式
输出 ECNU 最多能买到的粽子数量。

样例
input
2
10 3
22 3
output
4
9
提示
有两组测试数据:
对于第一组测试数据:有10元钱,粽子3元一个,可以买3个,但是买3送1,所以最后有4个。
对于第二组测试数据:有22元钱,粽子3元一个,可以买7个,但是买5送2,所以最后有9个。

思路

可以说是贪心算法,优先想凑最高优惠,不行再用次级优惠,
这里直接用一个f函数,套一下就行了。

代码

  public static int f(int a, int b, int num) {
    if (a >= 5 * b) {
      return f(a - 5 * b, b, num + 7);
    } else if (a >= 3 * b) {
      return f(a - 3 * b, b, num + 4);
    } else {
      return num + a / b;
    }
  }

  public static void fun() {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    for (int i = 0; i < n; i++) {
      int a = sc.nextInt();
      int b = sc.nextInt();
      System.out.println(f(a, b, 0));
    }
  }

标签:粽子,int,测试数据,ECNU,num,2143,端午节,sc
来源: https://www.cnblogs.com/blogxjc/p/14358713.html