У меня вопрос, как получить результат (2 ^ 100) * (3 ^ 5) по модулю 10 ^ 9 + 7? Программа попросит пользователя ввести мощность (2 ^ a) и 3 ^ b, после этого на выходе отобразится результат 2 ^ a * 3 ^ b.
Я попытался преобразовать всебольшие числа по модулю, а времена по модулю. Но это не работает для 2 * 100 * 3 ^ 5
#include "stdio.h"
int main()
{
long long int testcase,b,c,N,a;
long long int pow2,pow3 = 1;
long long int m = 1000000007;
// input the power
scanf("%lld",&a); getchar();
scanf("%lld",&b); getchar();
// power of 2 (2^a)
for(int i = 1; i <= a; i++){
pow2 = pow2 * 2;
}
// power of 3 (3^b)
for(int j = 1; j <= b; j++){
pow3 = pow3 * 3;
}
// convert the big numbers into modulo
long long int i = 1;
i = (1*pow2) % m ;
long long int j = 1;
j = (1*pow3) % m;
// the result of first modulo times second modulo
printf("%lld\n", i*j);
// doesnt work for 2^100 * 3^5
return 0;
}
Для a = 2 и b = 5 это дает выход 972 (что правильно) для a = 100 и b = 3 егодает 0 вывод.