-1
这个特定的代码是针对spoj中下一个回文的问题的解决方案。 这是链接http://www.spoj.com/problems/PALIN/ 该问题提到,数字不会跨越1000000.So long应该足够了,但仍然会出现此错误。获取NZEC运行时错误。无法识别错误
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static long tostr(String s,String b){
StringBuilder a = new StringBuilder(s);
String r = String.valueOf(a.reverse());
return Long.parseLong(s+b+r);
}
public static long toStr(String s){
StringBuilder a = new StringBuilder(s);
String r = String.valueOf(a.reverse());
return Long.parseLong(s+r);
}
public static void main (String[] args) throws java.lang.Exception
{
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
PrintWriter out = new PrintWriter(System.out,true);
int t = Integer.parseInt(br.readLine());
while(t-->0){
long n = Long.parseLong(br.readLine());
long number = n;
int len = 0; while (number != 0) { number /= 10; len++; }
if((len&1)==0){
String s = String.valueOf(n);
String r = s.substring(0,len/2);
while(true){
long num = toStr(r);
if(num == 99){
out.println(101);break;
}
if(num == 9999){
out.println(10001);break;
}
if(num == 999999){
out.println(1000001);break;
}
if(num>n)
{out.println(num);break;}
long m = Long.parseLong(r);
m++;
r = String.valueOf(m);
}
}
else{
String s = String.valueOf(n);
String r = s.substring(0,len/2);
String b = s.substring((int)(len/2),(len/2)+1);
if(b.equals("9")){
while(true){
if(n == 999){out.println(1001);break;}
if(n==99999){out.println(100001);break;}
if(n == 9999999){out.println(10000001);break;}
long num = tostr(r,b);
if(num>n){out.println(num);break;}
long m = Long.parseLong(r);
m++;
r = String.valueOf(m);
}
}
else{
while(true){
long num = tostr(r,b);
if(num>n){out.println(num);break;}
long m = Long.parseLong(b);
m++;
b = String.valueOf(m);
}
}
}
}
}
}