我很确定我的程序有效,因为它给出了与uv-output相同的结果。但它说我的回答是错误的。有些人可能知道这个网站。我还是初学者,没有经验,所以我希望得到一些帮助。也许是我想念那个问题的东西。 这是probelm链接>> (http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=3&problem=36&mosmsg=Submission+received+with+ID+13417700) 这是我的代码。
import java.io.*;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws FileNotFoundException {
Main myWork=new Main();
File inputFile=new File("input.txt");
if(inputFile.exists()){
Scanner scan=new Scanner(inputFile);
while(scan.hasNext()){
int i=scan.nextInt();
int j=scan.nextInt();
int count =0;
for(int x=i; x<=j;++x){
int y= myWork.doAlgorithem(x);
if(count <y)
count=y;
}
System.out.println(i+" "+j+" "+count);
}}
System.exit(0);
}
public static int doAlgorithem(int i)
{
int count=1;
while( i != 1){
if(i % 2 != 0){
count++;
i= i*3 +1;
}
else
{
count++;
i /=2;
}
}
return count;
}
}
答案 0 :(得分:1)
我相信你的解决方案的问题在于你假设第一个整数总是小于第二个。
当你在竞赛中解决编程问题时,你应该从不做出任何假设。
尝试使用从here。
中提取的这些案例的代码1 10
100 200
201 210
900 1000
1000 900
999999 999990
输出应为:
1 10 20
100 200 125
201 210 89
900 1000 174
1000 900 174
999999 999990 259