{
  "type": "code_options",
  "author": "csdn.net",
  "source": "solution.md",
  "exercise_id": "e73bfd9784bc4eb8ae7118bac4855223",
  "keywords": "算法中阶,贪心算法,活动选择问题,高级设计和分析技术",
  "title": "蓝桥杯Candy Store",
  "desc": [
    {
      "content": "\n<p>问题描述\n经营一家糖果店是非常困难的&#xff0c;你需要优化各种各样的东西。最近你在销售一种非常时髦的糖果&#xff0c;叫做Whizboppers。这种糖果变质非常迅速&#xff0c;所以&#xff1a;<br />\n·你必须每天早上从供应商买来新的Whizboppers。<br />\n·你必须用当天早上从供应商买来的盒子装着糖果出售。<br />\n你可以从你的供应商处买来装有任意整数克糖果的盒子。<br />\n每天有至多k位顾客到你的店里来。从第1个人开始&#xff0c;每个人会选择花费整数分的钱来买Whizboppers&#xff0c;钱数在1分到C分之间&#xff08;包含1分和C分&#xff09;。你打算以1分钱每克的价格出售&#xff1b;所以如果一个人想要花4分钱&#xff0c;你会给他恰好4克糖果。你可以给他1个4克的盒子&#xff0c;也可能是1个2克的盒子和2个1克的盒子。<br />\n你最少需要买几个盒子才能保证&#xff0c;不管每个人想花多少钱买糖&#xff0c;你总是可以给他们对应质量的糖果&#xff1f;\n<br />　　注意&#xff1a;当一个人选择自己想买多少糖果后&#xff0c;你知道之前的人已经买了多少糖&#xff0c;但不能预知之后的人打算买多少糖。<br />\n举个例子&#xff0c;如果每天至多有2位顾客到你的店里&#xff0c;每个人至多花2分钱(k&#61;2,C&#61;2)&#xff0c;你可以从你的供应商买4个1克的盒子。但是你可以做的更好&#xff1a;只要买2个1克的盒子和1个2克的盒子&#xff0c;就可以满足你的顾客。如下所示&#xff1a;<br />\n第一个人给第一个人的盒子第二个人给第二个人的盒子2分1 个 2克2分<br />\n1分2 个 1克<br />\n1 个 1克1分1 个 1克2分<br />\n1分1 个 2克<br />\n1 个 1克<br />　　不论第一个人怎么买&#xff0c;你都可以给他对应质量的盒子&#xff0c;同时保证第二个人也能拿到正确质量的糖果。所以对于k&#61;2,C&#61;2&#xff0c;你用3个盒子就可以满足任意的顾客需求。\n输入格式\n第一行一个整数T&#xff0c;表示询问数量。\n接下来T行&#xff0c;每行包含两个整数k和C&#xff0c;分别表示最大人数和每个人花费的最多钱数。\n输出格式\n对于每一个询问&#xff0c;输出一行包含&#34;Case #x: y&#34;&#xff0c;x是询问编号&#xff08;从1开始标号&#xff09;&#xff0c;y是你每天最少需要的盒子数量。</p>",
      "language": "markdown"
    }
  ],
  "answer": [
    {
      "content": "",
      "language": "cpp"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ]
  ],
  "template": {
    "content": "#include<iostream>\n#include<cmath>\nusing namespace std;\nint main()\n{\n\tint n, k, count = 1;\n\tlong long c;\n\tcin >> n;\n\twhile (n--)\n\t{\n\t\tcin >> k >> c;\n\t\tint num = k; \n\t\tlong long sum = k;\n\t\tfor (long long i = 2; i <= c; i = sum / k + 1)\n\t\t{\n\t\t\tint t = num;\n\t\t\tnum += ceil((k * i - sum) * 1.0 / i);\n\t\t\tsum += i * (num - t);\n\t\t}\n\t\tcout << \"Case #\" << count++ <<\": \" << num << endl;\n\t}\n\treturn 0;\n}",
    "language": "cpp"
  },
  "node_id": "dailycode-8190a9a91ce54eef9e371ce1dcecad04",
  "license": "csdn.net",
  "created_at": 1637894159,
  "topic_link": "https://bbs.csdn.net/topics/600470178"
}