Я использовал следующий код для вопроса, но он продолжает давать мне ошибку NZEC, когда я отправляю ее на SPOJ. Мой код отлично работает на Eclipse или через cmd.
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int line,num,numb,rev = 0,r,i,flag;
ArrayList <Integer> nums=new ArrayList <Integer>();
Scanner b=new Scanner(System.in);
Scanner a=new Scanner(System.in);
line=b.nextInt();
for(i=0;i<line;i++)
{flag=0;
num=a.nextInt();
num=num+1;
numb=num;
do {
while(numb>0)
{r=numb%10;
rev=(rev*10)+r;
numb=numb/10;
}
if (rev==num)
{nums.add(num);
rev=0;
flag=1;
break;
}
else
{num=num+1;
numb=num;
rev=0;}
}while(flag==0);
}
for (int newnum : nums)
{System.out.println(newnum);}
}
}
ошибка, которую вы делаете, заключается в том, что вы храните num
в integer datatype
типе integer datatype
Ограничение говорит, что
K не более 1000000 цифр (это
digits
и не до этогоnumber
)
Невозможно, чтобы integer
huge number
хранило такое huge number
вам нужно использовать string
для решения этой конкретной проблемы. Попробуйте этот ввод в своем затмении
454646546546546546546546464646464646
вы поймете, где вы ошибаетесь
string
и вы можете сделать это следующим образом .. есть и другой подход .. вы можете сравнить digit
в first index
с last index
, затем second index
со second last index
и так далее, и если они одинаковы, тогда это нормально, иначе это не будет паллиндром