关于java:为什么我在Hackerrank上的这段代码由于超时而被终止? 我的最后一次迭代没有发生?

Why i am getting Terminated due to timeout in this code on Hackerrank? My last iteration is not taking place?

问题-小鲍比喜欢巧克力。他经常去自己喜欢的商店Penny Auntie购买。他们正在Penny Auntie升职。如果Bobby保存了足够的包装纸,则可以将其上交以获取免费的巧克力。

例如,鲍比(Bobby)必须花钱购买每块巧克力。他可以上交包装纸,以得到另一个酒吧。最初,他购买酒吧,并在吃完它们后得到包装纸。他上交了他们,留下来还有更多的酒吧。吃完那两个之后,他有了包装纸,然后把包装纸和新的酒吧留给他。一旦吃完那个,他就会有包装纸,然后将它们上交另一个酒吧。吃完那个之后,他只有包装纸,他的fe席结束了。总的来说,他已经吃过酒吧。

功能说明

在下面的编辑器中完成ChocolateFeast功能。它必须返回充分利用促销活动后Bobby可以吃的巧克力数量。

ChocolateFeast具有以下参数:

n:代表Bobby初始金额的整数
c:代表巧克力棒成本的整数
m:整数,表示他可以申请免费包装的包装数量
注意:如果小鲍比有足够的精力来获取免费的巧克力,他总是会把包装纸上交。

输入格式

第一行包含一个整数,表示要分析的测试用例的数量。
接下来的每一行包含三个以空格分隔的整数:,和。它们代表花费的金钱,巧克力的成本以及他可以免费获得的巧克力包装纸的数量。

约束条件

输出格式

对于每次前往Penny Auntie的行程,请在新行中打印Bobby吃的巧克力总数。

样本输入

3
10 2 5
12 4 4
6 2 2
样本输出

6
3
5

我已经尝试使用以下代码进行此操作-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

1
2
3
4
5
6
7
8
9
10
11
    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