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 より大きい数値の出力として負の数値が返されます。何が問題なのかわかりません。