Задача по информатике олимпиада ПОМОГИТЕ ПОЖАЛУЙСТАДля того чтобы проверить, как её
Задача по информатике олимпиада ПОМОГИТЕ ПОЖАЛУЙСТА
Для того чтоб проверить, как её воспитанники могут считать, Мария Ивановна каждый год задаёт им на дом одну и ту же задачку для данного естественного A отыскать минимальное естественное N такое, что N в степени N (N, умноженное на себя N раз) делится на A. От года к году и от ученика к воспитаннику изменяется только число A. Вы решили посодействовать будущим поколениям. Для этого вам нужно написать программу, решающую эту задачку. Формат входных данных На вход подаётся единственное число A (1A1000000000 на всякий случай; вдруг Мария Ивановна задаст великое число, чтобы завалить кого-нибудь). Формат выходных данных Вывести единственное число N.
Program YaBidlo;
Var
i, A: longint;
x,
u, j,
N, m : longint;
Function FDiv (A, left : LongInt) : LongInt;
var
d,
i : longint;
begin
d := 1;
for i := left to Trunc (Sqrt (A)) do
if (A mod i = 0)
then
begin
d := i;
Break;
end;
if (d lt;gt; 1)
then
FDiv := d
else
FDiv := A;
end;
Function g (N, u : longint) : longint;
var
i : longint;
begin
i := 0;
while (N mod u = 0)
do
begin
Inc (i);
N := N div u;
end;
g := i;
end;
Begin
Assign (Input, 'input.txt');
Assign (Output, 'output.txt');
Reset (Input);
Read (A);
Close (Input);
m := 0;
N := 1;
i := FDiv (A, 2);
u := 2;
while (A gt; 1)
do
begin
N := N * i;
j := 0;
while (A mod i = 0)
do
begin
Inc (j);
A := A div i;
end;
if (j gt; m)
then
begin
m := j;
u := i;
end;
i := FDiv (A, i + 2);
end;
x := 1;
while (g (N * x, u) * N * x lt; m)
do
Inc (x);
N := N * x;
ReWrite (Output);
Write (N);
Close (Output);
End.
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Физика.
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.