Для того чтоб проверить, как ее воспитанники могут считать, Мария Ивановна

Для того чтоб проверить, как ее воспитанники могут считать, Мария Ивановна каждый год задает им на дом одну и ту же задачку Для заданного натурального A найти минимальное естественное N такое, что N в ступени N (N, умноженное на себя N раз) делится на A. Из года в год и от ученика к воспитаннику изменяется только число A. Вы решили посодействовать будущим поколениям. Для этого вам необходимо написать программку, решающую эту задачку Формат входных данных. Во входном файле содержится единственное число A (1 A 109). Формат выходных данных. В выходной файл вывести единственное число N. Образцы.

input.txt output.txt 8 4 13 13

Имя входного файла input.txt. Имя входного файла output.txt. Наибольшее время работы на одном тесте 2 сек. Наибольшее время работы на одном тесте 2 сек. Наибольший объем применяемой памяти 32 мб

Задать свой вопрос
1 ответ

Program Jopascal;

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.

Ольга Мордасевич
При вводе А = 816293376 программка выдает N = 54, обязано быть N = 18, при вводе А = 45000 программка выдает N = 90, обязано быть N = 30, при вводе А = 26244 программка выдает N = 18, должно быть N = 12.
Роман Вейнберг-Разба
При вводе А = 816293376 программка выдает N = 54, должно быть N = 18, при вводе А = 45000 программка выдает N = 90, обязано быть N = 30, при вводе А = 26244 программка выдает N = 18, обязано быть N = 12.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт