import java.util.*;
class ModuloInverse {
static long mod = 1000000007;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long num = in.nextLong();
System.out.println(m_inverse(num, mod));
}
static long m_inverse(long a, long p) {
return m_pow(a, p - 2);
}
static long m_pow(long n, long m) {
long result = 0;
if (m == 1) {
return (n % mod);
}
if (m % 2 == 0) {
result = m_pow(n, m / 2);
return ((result * result) % mod);
} else {
result = m_pow(n, (m - 1) / 2);
return (((n % mod) * (result * result)) % mod);
}
}
}
这是我编写的用于计算乘法模逆(模 10^9+7)的 java 程序。但是对于大于 10 的数字,它会给出负数作为输出。无法弄清楚出了什么问题。