Программа для решения задач
Оценка 4.8

Программа для решения задач

Оценка 4.8
Компьютерные программы
txt
информатика
5 кл—6 кл
24.10.2018
Программа для решения задач
Задача 5. Одноклассники - Дима, Борис, Валя, Жанна, Катя и Михаил решили отпраздновать окончание школы. Они хотят рассесться вокруг круглого стола и торжественно съесть праздничный торт со свечами. Однако у каждого участника вечеринки есть свои пожелания к рассадке.  Катя и Жанна хотят сидеть максимально далеко друг от друга.  Михаилу всё равно, где сидеть, лишь бы не рядом с Катей.  Валя хочет сидеть непременно между Борисом и Жанной.  Дима хочет всё время видеть Валю, поэтому требует, чтобы она сидела ровно напротив него.  Борис и Дима конфликтуют в последнее время, поэтому между ними обязательно должен сидеть хотя бы один одноклассник.  Борис хочет, чтобы рядом с ним обязательно сидела Катя. Как должны рассесться одноклассники, чтобы всем было комфортно?Программа для решения задачи
klad.txt

Program Degree;

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 <> 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 > 1)

 do

begin

 

N := N * i; { умножаем N на очередной простой делитель А }

{ избавляемся от сомножителя i }

j := 0; { инициализация }

while (A mod i = 0)

do

begin

Inc (j);

A := A div i;

 end;

 if (j > m)

 then

 begin

 m := j; { в этом случае j максимальная степень }

 u := i; { непосредственно сам делитель }

 end;

 

i := FDiv (A, i + 2);

 end;

{ берем x = 1 для более простого решения с технической стороны }

x := 1;

 

 while (g (N * x, u) * N * x < m)

do

Inc (x);

N := N * x; { искомое решение }

 ReWrite (Output);

Write (N);

 Close (Output);

End.

Program Degree; Var i, A :

Program Degree; Var i, A :

Inc (j); A := A div i; end; if (j > m) then begin m := j; { в этом случае j максимальная степень }…

Inc (j); A := A div i; end; if (j > m) then begin m := j; { в этом случае j максимальная степень }…
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
24.10.2018