【发布时间】:2019-05-14 17:00:24
【问题描述】:
问题-小鲍比喜欢巧克力。他经常去他最喜欢的商店 Penny Auntie 购买它们。他们正在 Penny Auntie 升职。如果 Bobby 节省了足够的包装纸,他可以将它们上交以获得免费巧克力。
例如,鲍比必须在每块巧克力上花钱。他可以上交包装纸来接收另一个酒吧。最初,他买了条,吃完后有包装纸。他上交了他们,给他留下了更多的酒吧。吃完这两个后,他有了茄衣,然后把茄衣和他的新酒吧留给他。一旦他吃了那个,他就会有包装纸并将它们交给另一个酒吧。吃完那个,他只有茄衣,宴席结束。总的来说,他吃过酒吧。
功能说明
在下面的编辑器中完成 ChocolateFeast 功能。它必须返回 Bobby 在充分利用促销活动后可以吃的巧克力数量。
chocolateFeast 有以下参数:
n:一个整数,代表 Bobby 的初始金额 c:表示巧克力条成本的整数 m:一个整数,表示他可以为一个免费酒吧提供的包装数量 注意:如果小鲍比有足够的钱获得免费巧克力,他总是会上交包装纸。
输入格式
第一行包含一个整数,表示要分析的测试用例的数量。 接下来的每一行都包含三个以空格分隔的整数: 、 和 。它们代表要花的钱、巧克力的成本,以及他可以为免费巧克力上交的包装纸数量。
约束
输出格式
对于每次去 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 个输出。最后一个循环没有执行。
-
你在第三种情况下陷入
while循环就是他的意思,这是真的 -
所以我应该改变while循环中的条件?
-
你应该写下你正在做的逻辑并手工完成最后一个案例,并确保它有意义,你的问题不是“代码”本身,而是你使用的逻辑。最后的 while 循环永远不会低于或等于 0。