Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.math.BigInteger;
- class PALIN_SPOJ {
- static final BigInteger ZERO = BigInteger.ZERO, ONE = BigInteger.ONE, TEN = BigInteger.TEN;
- public static void main(String[] args) {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- BigInteger num = ZERO, copy = ZERO, fh = ZERO, sh = ZERO, newnum = ZERO;
- try{num = new BigInteger(br.readLine());}catch(Exception e){};
- copy = num;
- int c = 0;
- while(copy.compareTo(ZERO) == 1){
- copy = copy.divide(TEN);
- c++;
- }
- copy = num;
- fh = copy.divide(pow(c/2));
- sh = reverse(c%2 == 0? fh: fh.divide(TEN));
- newnum = newnum.add(fh.multiply(pow(c/2)));
- newnum = newnum.add(sh);
- if(newnum.compareTo(num) == -1 || newnum.compareTo(num) == 0 ){
- newnum = ZERO;
- fh = fh.add(ONE);
- sh = reverse(c%2 == 0? fh: fh.divide(TEN));
- newnum = newnum.add(fh.multiply(pow(c/2)));
- newnum = newnum.add(sh);
- }
- System.out.println(newnum);
- }
- private static BigInteger pow(int n) {
- BigInteger ret = ONE;
- for(int i = 1; i <= n; i++)
- ret = ret.multiply(TEN);
- return ret;
- }
- private static BigInteger reverse(BigInteger n) {
- BigInteger ret = ZERO;
- while(n.compareTo(ZERO) == 1){
- ret = ret.multiply(TEN);
- ret = ret.add(n.mod(TEN));
- n = n.divide(TEN);
- }
- return ret;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement