Прямоугольный остров разделён на квадраты так, что его размеры — N х М квадратов. В каждом квадрате зарыто некоторое число золотых монет, эти данные хранятся в матрице (двумерном массиве) Z, где Z[i, j] — число монет в квадрате с координатами (i, j). Пират хочет пройти из юго-западного угла острова в северо-восточный, причём он может двигаться только на север или на восток. Как пирату собрать наибольшее количество монет? Напишите программу, которая находит оптимальный путь пирата и число монет, которое ему удастся собрать. На любом языке программирования:)
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
два других сделайте сами для тренировки