Разбор
Как вычислить быстрее чем ? Например,
Можно заметить что , например .
Для нечетных степеней воспользуемся формулой , например .
Следующая рекуррентная формула дает нам решение за :
При итеративной реализации следует отдельно обработать случай , — большое целое число. Например при для вычисления следует выполнить итераций, что даст Time Limit.
Реализация алгоритма
Функция f вычисляет значение .
long long f(long long x, long long n) { if (n == 0) return 1; if (n % 2 == 0) return f(x * x, n / 2); return x * f(x, n - 1); }
Основная часть программы. Читаем входные данные.
scanf("%lld %lld",&x,&n);
Вычисляем и выводим ответ .
res = f(x,n); printf("%lld\n",res);