C++. Степень.
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом одну и ту же задачу — для заданного натурального A найти минимальное натуральное N такое, что N в степени N (N, умноженное на себя N раз) делится на A. От года к году и от ученика к ученику меняется только число A.
Вы решили помочь будущим поколениям. Для этого вам необходимо написать программу, решающую эту задачу.
Входные данные
Во входных данных содержится единственное число A
(1≤A≤109 — на всякий случай; вдруг Мария Ивановна задаст большое число, чтобы «завалить» кого-нибудь…).
Выходные данные
Выведите число N.
Answers & Comments
#include <iostream>
#include <math.h>
int f(int a)
{
for (int n = 1; n <= a; n++)
{
double b = (double)a / n;
if ((int)b == b)
{
b = pow(n, n) / a;
if ((int)b == b)
return n;
}
}
return a;
}
int main(int argc, char *argv[])
{
int a;
std::cin >> a;
std::cout << f(a);
}