// PascalABC.NET 3.0, сборка 1164 от 11.02.2016 function gcd(a,b:integer):integer; // Нахождение НОД var i: longint; begin while b <> 0 do begin a := a mod b; i := b; b := a; a := i end; Result:=a end;
begin var a:=ReadInteger('a='); var b:=ReadInteger('b='); var nod:=gcd(a,b); if nod>1 then WritelnFormat('Дробь сократима: {0}/{1}={2}/{3}', a,b,a div nod,b div nod) else WritelnFormat('Дробь {0}/{1} несократима',a,b) end.
b = 12
Объяснение:
Команда 1: Прибавь b
Команда 2: Умножь на 3
Нужно из 3 получить 225 за 5 команды
Дана программа: 21212
Пойдём с конца (делаем обратные действия)
5) 225 ÷ 3 = 75 [Команда 2]
⇒ 4) 75 - b = x [Команда 1]
Ближайшее число, которое делится на 3 - это 72
⇒ 4) 75 - 3 = 72 [Команда 1]
3) 72 ÷ 3 = 24 [Команда 2]
2) 24 - 3 = 21 [Команда 1]
1) 21 ÷ 3 = 7 [Команда 2]
Не подошло
Следующая попытка
5) 225 ÷ 3 = 75 [Команда 2]
⇒ 4) 75 - b = x [Команда 1]
Ближайшее число после 72, которое делится на 3 - это 69
⇒ 4) 75 - 6 = 69 [Команда 1]
3) 69 ÷ 3 = 23 [Команда 2]
2) 23 - 6 = 17 [Команда 1]
1) 17 ÷ 3 = 5,6 [Команда 2]
Не подошло
Следующая попытка
5) 225 ÷ 3 = 75 [Команда 2]
⇒ 4) 75 - b = x [Команда 1]
Ближайшее число после 72 и 69, которое делится на 3 - это 66
⇒ 4) 75 - 9 = 66 [Команда 1]
3) 66 ÷ 3 = 22 [Команда 2]
2) 22 - 9 = 13 [Команда 1]
1) 17 ÷ 3 = 5,6 [Команда 2]
Не подошло
Следующая попытка
5) 225 ÷ 3 = 75 [Команда 2]
⇒ 4) 75 - b = x [Команда 1]
Ближайшее число после 72, 69 и 66, которое делится на 3 - это 63
⇒ 4) 75 - 12 = 63 [Команда 1]
3) 63 ÷ 3 = 21 [Команда 2]
2) 21 - 12 = 9 [Команда 1]
1) 9 ÷ 3 = 3 [Команда 2]
Подошло
⇒ b = 12
function gcd(a,b:integer):integer;
// Нахождение НОД
var
i: longint;
begin
while b <> 0 do begin
a := a mod b;
i := b; b := a; a := i
end;
Result:=a
end;
begin
var a:=ReadInteger('a=');
var b:=ReadInteger('b=');
var nod:=gcd(a,b);
if nod>1 then
WritelnFormat('Дробь сократима: {0}/{1}={2}/{3}',
a,b,a div nod,b div nod)
else WritelnFormat('Дробь {0}/{1} несократима',a,b)
end.
Тестовое решение:
a= 23541
b= 335160
Дробь сократима: 23541/335160=59/840