大整数 % (mod)

Biginteger % (mod)

我的代码的任务是显示一个数字是否与数字 1-12 相除。如果是那么它应该打印(“1”),如果不是(“0”)。

示例:

Input == 6;
Output == 111001000000;

问题是“%”不适用于 BigInteger。我已经搜索了一个解决方案,发现 BigInteger mod(BigInteger other) 应该可以完成这项工作,但我无法真正理解它我该如何使用它,因为我每次和每一种方式都尝试使用它。它会引发错误。

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        BigInteger bi = sc.nextBigInteger();

        for (int i = 1; i <= 12; i++) {
            if (bi % i == 0) {
                System.out.print("1");
            }
            if (bi % i != 0) {
                System.out.print("0");
            }
        }
    }
}

当您使用Integer时,jdk会为您自动装箱和自动拆箱。所以你可以用运算符 % 修改它们,就像使用原始值一样。 虽然 jdk 不会自动装箱或自动拆箱 BigInteger,但您必须显式调用 mod 方法。

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        BigInteger bi = sc.nextBigInteger();

        for (int i = 1; i <= 12; i++) {
            if (bi.mod(BigInteger.valueOf(i)).equals(BigInteger.ZERO)) {
                System.out.print("1");
            } else {
                System.out.print("0");
            }
        }
    }
}