问题-小鲍比喜欢巧克力。他经常去他最喜欢的商店 Penny Auntie 购买它们。他们正在 Penny Auntie 进行促销。如果 Bobby 节省了足够多的 wrapper ,他可以把它们换成免费巧克力。
例如,Bobby 必须花钱购买每 block 巧克力。他可以交出 wrapper 以获得另一 block 金条。最初,他购买巧克力棒并在吃完后将其包装起来。他上交了它们,留下 , 以获得更多的酒吧。吃了那两个之后,他有了 wrapper ,转身离开了 wrapper 和他的新酒吧。一旦他吃了那个,他就有了 wrapper 并将它们变成另一个酒吧。吃完那个,他只剩下皮了,他的宴会就结束了。总的来说,他吃过酒吧。
功能说明
在下面的编辑器中完成chocolateFeast功能。它必须返回 Bobby 在充分利用促销后可以吃的巧克力数量。
chocolateFeast 具有以下参数:
n:一个整数,代表Bobby的初始金额 c:一个整数,代表一 block 巧克力的成本 m:一个整数,表示他可以为免费金条上交的 wrapper 数量 注意:如果 Little Bobby 有足够的钱来获得免费巧克力,他总是会交出他的 wrapper 。
输入格式
第一行包含一个整数,表示要分析的测试用例的数量。 接下来的每一行都包含三个以空格分隔的整数: 、 和 。它们代表要花的钱、一 block 巧克力的成本,以及他可以为免费巧克力上交的 wrapper 数量。
约束
输出格式
对于每次去 Penny Auntie 的旅行,在新行上打印 Bobby 吃的巧克力总数。
示例输入
3 10 2 5 12 4 4 6 2 2 示例输出
6 3个 5
我已经用下面的代码试过了-
static int chocolateFeast(int n, int c, int m) {
int bars=n/c;
int wrapper=bars;
int sum=bars;
while((wrapper/m)!=0){
bars=wrapper/m;
sum+=bars;
wrapper=bars+bars%m;
}
return sum;
}
public static void main(String[] args)throws IOException{
Scanner sc=new Scanner(System.in);
int t,n,c,m,total;
t=sc.nextInt();
for (int i=1;i<=t;i++){
n=sc.nextInt();
c=sc.nextInt();
m=sc.nextInt();
total=chocolateFeast(n,c,m);
System.out.println(total);
}
}
输入(标准输入) 3个 10 2 5 12 4 4 6 2 2 您的输出(标准输出) 6个 3个 预期产出 6个 3个 5
最佳答案
编辑2:
题目看错了,按照M Oehm改了代码。下面的代码现在似乎可以工作了。您正在检查 bars%m
而不是 wrapper%m
static int chocolateFeast(int n, int c, int m) {
int bars=n/c;
int wrapper=bars;
int sum=bars;
while((wrapper/m) != 0){
bars=wrapper/m;
wrapper=bars + wrapper%m;
sum+=bars;
}
return sum;
}
我检查了您提供的示例的输出,它正确输出了 6 3 5
。
关于java - 为什么我在 Hackerrank 上的这段代码中因超时而被终止?我的最后一次迭代没有发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56135250/