Java Don';我不知道SPOJ的哪些边界案例给出了错误的答案
这是完整的代码Java Don';我不知道SPOJ的哪些边界案例给出了错误的答案,java,Java,这是完整的代码 package spoj; import java.util.*; import java.util.regex.*; import java.text.*; import java.math.*; import java.awt.geom.*; import java.io.*; public class ABSURD { public static void main(String[] args) throws IOException{
package spoj;
import java.util.*;
import java.util.regex.*;
import java.text.*;
import java.math.*;
import java.awt.geom.*;
import java.io.*;
public class ABSURD {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner sc = new Scanner(System.in);
String in = sc.nextLine();
long t = Long.parseLong(in);
while(t>0)
{
String n;
n = sc.nextLine();
int i= n.length()-1;
while(i>=0)
{
if(n.charAt(i) != '0')
break;
i--;
}
long k = Long.parseLong(n);
double x1 = (.95 * (double)k);
double x2 = (1.05*(double)k);
long x = (long)x1;
long y = (long)x2;
if((double)x == x1)
x = x-1;
System.out.println(x+" "+y);
n = n.substring(0,i+1);
// System.out.println(n);
if(n.equals(""))
{
System.out.println("not absurd");
t--;
continue;
}
String a = Long.toString(x);
int la = a.length();
String b = Long.toString(y);
int lb = b.length();
int absurdity = n.charAt(n.length()-1) == 5?2*n.length()-1:2*n.length();
//System.out.println(absurdity);
String answer = "not absurd";
if(n.length() == 1)
{
answer = "not absurd";
}
else
{
if(la<lb)
{
if(absurdity >2)
answer = "absurd";
}
if(lb == la)
{
int j=0;
while(j<la)
{
if(a.charAt(j) != b.charAt(j))
break;
j++;
}
int absurd = a.charAt(j)<'5' && b.charAt(j)>='5'?2*(j+1)-1:2*(j+1);
//System.out.println(absurd);
if(absurd<absurdity)
answer = "absurd";
}
}
System.out.println(answer);
t--;
}
}
}
spoj包装;
导入java.util.*;
导入java.util.regex.*;
导入java.text.*;
导入java.math.*;
导入java.awt.geom.*;
导入java.io.*;
公众阶级的荒谬{
公共静态void main(字符串[]args)引发IOException{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
扫描仪sc=新的扫描仪(System.in);
字符串in=sc.nextLine();
长t=long.parseLong(in);
而(t>0)
{
字符串n;
n=sc.nextLine();
int i=n.长度()-1;
而(i>=0)
{
如果(n.charAt(i)!='0')
打破
我--;
}
长k=long.parseLong(n);
双x1=(.95*(双)k);
双x2=(1.05*(双)k);
长x=(长)x1;
长y=(长)x2;
如果((双精度)x==x1)
x=x-1;
System.out.println(x+“”+y);
n=n.子串(0,i+1);
//系统输出println(n);
如果(n等于(“”)
{
系统输出打印(“不荒谬”);
t--;
持续
}
字符串a=Long.toString(x);
int la=a.长度();
字符串b=Long.toString(y);
int lb=b.长度();
int荒诞=n.charAt(n.length()-1)==5?2*n.length()-1:2*n.length();
//系统输出打印(荒诞);
String-answer=“不荒谬”;
如果(n.长度()==1)
{
回答:“不荒谬”;
}
其他的
{
if(la2)
回答:“荒谬”;
}
如果(lb==la)
{
int j=0;
while(j我在你的代码中看到了一些潜在的错误。我在这里不讨论它们,但会让你了解自己(好吧,这就是练习的重点)。不过,我会给出一些代码产生错误结果的情况。我希望这能使你进一步进行
15(输出不应该是荒谬的,您的输出应该是荒谬的)
25(输出不应该是荒谬的,您的输出是荒谬的)
55(输出不应该是荒谬的,您的输出应该是荒谬的)
1500(输出不应该是荒谬的,您的输出应该是荒谬的)