Мила любит играть в Тетрис. Сегодня ей попалась новая игра, которая очень похожа на Тетрис.В этой игре есть поле в форме стакана ширины n, разделенное на клетки размером 1×1. В отличиеот обычного Тетриса, в этой игре используются горизонтальные фигурки1 × x, состоящие из x клеток: высоты1 и ширины x. Перед падением очередной фигурки, игрок может выбрать ее размер x любым целым числом от1доn, включительно. Фигурки нельзя поворачивать, но можно двигать влево и вправо. Фигурка падает до тех пор, пока не наткнётся на другую фигурку, либо на дно стакана.Мила не любит оставлять пустые клетки под фигурами. Ее цель заполнить нижние ряды поля,чтобы занятая фигурками часть образовала прямоугольник ширины n.Вам задано состояние поля в формате: a1, a2, . . . , an, где ai число клеток, занятых в i-м столбце стакана. В заданном поле никакая пустая клетка не находится под занятой. Найдите, какое минимальное число фигурок ей понадобится, чтобы Мила смогла заполнить нижние ряды поля, образовав прямоугольник ширины n
var i,j,n:longint;
f:boolean;
begin
writeln('Введите число');
readln(n);
if n<2 then writeln('Простых делителей нет')
else
begin
write('Число ',n,' ','= 1');
for i:=2 to n do
if n mod i=0 then
begin
f:=true;
j:=2;
while f and(j<=round(sqrt(i/2)))do
begin
if i mod j=0 then f:=false
else j:=j+1;
end;
if f then write('*',i);
end;
end;
end.
Тестовое решение:
Введите число
2345
Число 2345 = 1*5*7*35*67
1) выписываем остатки (те что в скобках 1 или 0 с последнего числа полученного при делении )
104 / 2 = 52 остаток (0)
52 / 2 = 26 остаток (0)
26 / 2 = 13 остаток (0)
13 / 2 = 6 остаток (1)
6 / 2 = 3 остаток (0)
3 / 2 = 1 (<== начинаем выписывать с этого числа) остаток (1) <= следующее
ответ: 1101000
2)
510 / 2 = 255 остаток (0)
255 / 2 = 127 остаток (1)
127 / 2 = 63 остаток (1)
63 / 2 = 31 остаток (1)
31 / 2 = 15 остаток (1)
15 / 2 = 7 остаток (1)
7 / 2 = 3 остаток (1)
3 / 2 = 1(<== первое число) остаток (1)
ответ : 111111110
3)
634 / 2 = 317 остаток (0)
317 / 2 = 158 остаток (1)
158 / 2 = 79 остаток (0)
79 / 2 = 39 остаток (1)
39 / 2 = 19 остаток (1)
19 / 2 = 9 остаток (1)
9 / 2 = 4 остаток (1)
4 / 2 = 2 остаток (0)
2/ 2 = 1 (<== первое число)остаток (1)
ответ : 1101111010
4) число 731 попробуйте сделать сами для понимания
II)
1)
10111 нумеруем все цифры с права налево (первый номер-0)
1(4) 0(3) 1(2) 1(1) 1(0)
далее схема такая 1*2 в четвёртой степени(4) + 0 * 2 в третьей(3)+1*2 во второй(2) + 1*2 в первой(1) +1*2 в нулевой (0)
и так мы получаем 16+0+4+2+1=23
2) 110011 нумеруем 1(5) 1(4) 0(3) 0(2) 1(1) 1(0)
1*2 в пятой +1*2 в четвёртой +1*0 в третьей +1*0 во второй +1*2 первой +1*2 в нулевой=32+16+0+0+2+1=51
два других сделайте сами для тренировки