Вот формулировка задачи: если задано число N, пусть обратное число будет R. Задача состоит в том, чтобы напечатать выходную мощность выражения (N, R), где степенная функция представляет N, возведенную в степень R. Примечание. Поскольку ответы могут быть очень большими, выведите результат по модулю 10 ^ 9 + 7.
Я исключаю код драйвера и включаю только приведенный ниже код функции: (Язык: C ++)
long long power(int n,int r)
{ const int m=1000000007;
long long res=1;
while(r>0)
{
if(r&1)
res= res*n % m ;
n= n*n % m ;
r>>=1;
}
return res;
}
Проблема в том, что для некоторых случаев ввода выводится 0 (ноль), и я не могу понять, почему. Работает нормально для всех N = 1 до 11, но для 12 вывод равен 0. Работает нормально для 13, но снова возвращает 0 для 14.
I / P: 12 O / P: 0 // Неожиданно, ожидаемо 864354781
I / P: 13 O / P: 735546351 // Ожидаемый
I / P: 14 O / P: 0 // Неожиданный, ожидаемый 722400406
Можете ли вы пожалуйста, помогите мне понять, где я иду не так? Заранее спасибо.