首页 > 解决方案 > 在java中查找二进制表示是否是回文

问题描述

他想知道这个数字是不是很精彩

如果这个数字是奇数并且它的二进制表示是回文,那么这个数字就是美妙的。

这是我的问题 https://codeforces.com/group/MWSDmqGsZm/contest/223205/problem/C

错误是:测试 4 上的运行时错误

static public void zero(long n) {
    if (n == 0) {
        System.out.println("NO");
    }
}

static public String binary(long n) {

    String bin = "";
    while (n > 0) {
        bin += (n % 2 + 0);
        n /= 2;
    }

    return bin;
}

static public void CheckOdd(long n) {

    if (n % 2 != 0) {
        System.out.println("YES");
    } else {
        System.out.println("NO");
    }
}

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    long n = in.nextLong();
    if (n == 0) {
        zero(n);
    } else {

        long x = Integer.parseInt(binary(n));

        long original = x;
        long remainder, reverse = 0;
        while (x != 0) {
            remainder = x % 10;
            reverse = reverse * 10 + remainder;
            x /= 10;
        }

        if (original == reverse) {
            CheckOdd(n);
        } else {
            System.out.println("NO");
        }
    }
}

输入:262145

output :   java.lang.NumberFormatException: For input string: "1000000000000000001" at 
    java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.base/java.lang.Integer.parseInt(Integer.java:652)
        at java.base/java.lang.Integer.parseInt(Integer.java:770)
        at NewTest.main(NewTest.java:39)

标签: java

解决方案


推荐阅读