簡體   English   中英

為什么我在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:代表他可以免費贈送的包裝紙數量的整數注意:如果小Bobby願意,他總是會上交包裝紙有足夠的免費巧克力。

輸入格式

第一行包含一個整數,表示要分析的測試用例的數量。 接下來的每一行包含三個以空格分隔的整數:,和。 它們代表花費的金錢,巧克力的成本以及他可以免費獲得的巧克力包裝紙的數量。

約束

輸出格式

對於每次前往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);
    }
}

}

輸入(stdin)3 10 2 5 12 4 4 6 2 2您的輸出(stdout)6 3預期輸出6 3 5

EDIT2:

我看錯了問題,並根據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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM