Тесты проваливаются на степенях двойки (A=2^n) при n >= 5
Напишу два решения. Первое просто показывает алгоритм, но имеет ограничение на N (результат не может быть больше 15 из-за переполнения unsigned long long)
Второе по своей сути такое же, но не имеет ограничений. Однако для этого понадобится особый тип данных big_integer. Вторую реализацию прикрепил к у в виде текстового файла из-за ограничения на количество символов в е.
// первое решение
#include <iostream>
typedef unsigned long long ulong;
ulong pow(int num, int pow);
int main()
{
int a = 0;
std::cin >> a;
int n = 0;
while (n++ <= a)
{
if (pow(n, n) % a == 0)
{
std::cout << n << std::endl;
break;
}
}
return 0;
}
ulong pow(int num, int pow)
{
ulong res = num;
for (int i = 1; i < pow; ++i)
res *= num;
return res;
}