Submit | All submissions | Best solutions | Back to list |
PALIN - The Next Palindrome |
A positive integer is called a palindrome if its representation in the decimal system is the same when read from left to right and from right to left. For a given positive integer K of not more than 1000000 digits, write the value of the smallest palindrome larger than K to output. Numbers are always displayed without leading zeros.
Input
The first line contains integer t, the number of test cases. Integers K are given in the next t lines.
Output
For each K, output the smallest palindrome larger than K.
Example
Input: 2 808 2133 Output: 818 2222
Warning: large Input/Output data, be careful with certain languages
Added by: | adrian |
Date: | 2004-05-01 |
Time limit: | 2s-9s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: NODEJS PERL6 |
hide comments
|
||||||||||||||
2014-01-15 15:17:31 Irving AJ Rivas
Adhityaa: there are faster solutions. Yours works, but is pretty slow. Keep working on it. Last edit: 2011-10-27 15:26:15 |
||||||||||||||
2014-01-15 15:17:31 Sotirios Nikoloutsopoulos
I got AC on this problem , even if my code failed at some test cases at even numbers ( now my code is corrected :) ). Let's consider the case Input : 1 20899802 Wrong output : 21000012 Wright output : 20900902 Shouldn't such test cases be included? |
||||||||||||||
2014-01-15 15:17:31 hendrik
@manish: Write a brute force function and calc all results from 0..10000 or so. Then compare that against your algo you need for that task. I got AC at the first shot with that approach. |
||||||||||||||
2014-01-15 15:17:31 genesect
@Hadyan: status codes explained here: http://www.spoj.pl/forum/viewtopic.php?f=6&t=55 @Stefan: test cases contain no leading zeros, disregard that case |
||||||||||||||
2014-01-15 15:17:31 Ricky Suryadharma
Not wondering again... :D Just AC in Java. The main problem, just I though, how to read/write I/O (not the algorithm). Try to read byte by byte and write byte by byte (don't use Scanner class and System.out.println, they will slow program). Hey, after I saw the status, my Java program runs faster than my C++ program (even I use the same algorithm).. LOL.. my first time experience XD |
||||||||||||||
2014-01-15 15:17:31 Ricky Suryadharma
@hadi: Same here.. Firstly, I wrote in Java and always got TLE, even tried to read the input byte by byte (using the fastest method I've known). After transform my code to C++, without changing the algorithm, I got AC. Wondering... :| @Burak Yılmaztürk: Running time can be reduced by analyze and design the better algorithm, optimize the code (compiler or programming language manual or API may be such a help), choose another programming language like I did. See https://www.spoj.pl/tutorials/USERS/ for TLE. @aravind: May be you should try the worst testcase (1000000 digits) by generate the input (search I/O pipe reference for more info). Or you may try to generate the input for all 1000 first positive integers and see manually whether the output right or not. @Wojciech Pietrzak: I'm not familiar with that programming language. May be you should try the worst testcase. |
||||||||||||||
2014-01-15 15:17:31 An Yujie
Coders, attention. SIGSEGV means your array is not big enough. I got SIGSEGV by x[100000], but when I changed it to x[1000000], I got AC. It means that the biggest number may have 1000000 digits... Last edit: 2010-07-02 13:12:06 |
||||||||||||||
2014-01-15 15:17:31 Jargon
It's up to 1 million digits -- try reading the comments below yours to see if the question has been answered before. This is a string problem, not a number problem. |