请参阅以下两个代码,
代码1:
import java.util.*;
public class q{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
for(int g=0;g<t;g++){
int n=sc.nextInt(),c=sc.nextInt(),m=sc.nextInt();
int totalChoc=n/c;int wrappers=n/c;
while(m<=wrappers){
wrappers=wrappers-m;
totalChoc++;
wrappers++;}
System.out.println(totalChoc);}}}
代码2:
import java.util.*;
public class q{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
for(int g=0;g<t;g++){
int n=sc.nextInt(),c=sc.nextInt(),m=sc.nextInt();
int totalChoc=0;int wrappers=n/c;
while(wrappers>0){
totalChoc=n/c+wrappers/m;
wrappers=wrappers%m;}
System.out.println(totalChoc);}}}
这两个代码都是针对HackerRank上特定问题的解决方案。
两者都能给出正确的结果,但是代码1不会超时,而代码2却可以超时。
尽管我认为问题是由代码2的while循环引起的,但我认为这两个代码之间没有任何主要区别。
到底是什么问题?如何克服这个问题?