# Код на ruby 2.2.3p173 def automate(n) a = n / 1000 b = n / 100 % 10 c = n / 10 % 10 d = n % 10 t = [a*b, c*d] return (t.max.to_s + t.min.to_s).to_i end
def zadanie() for i in 1000..9999 t = automate(i) p [t, i] if t == 174 end end # Примеры применения zadanie()
ответ - нет таких цифр
Аналитическое решение 174 можно разложить на 1 + 74 и 17 + 4 по правилу 2 это только 17 + 4 17 - произведение двух чисел, но 17 простое и произведение только 17 и 1. 17 не может быть одной цифрой Значит вариант 174 невозможен при таких правилах
1. Самый простой - с использованием промежуточной ячейки
var
a,b,t:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
t:=a; a:=b; b:=t; Writeln(a,' ',b)
end.
2. Обмен без использования дополнительной памяти при сложения и вычитания
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
b:=a+b; a:=b-a; b:=b-a; Writeln(a,' ',b)
end.
3. Обмен без использования дополнительной памяти при логической операции "исключающее ИЛИ"
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
a:=a xor b; b:=a xor b; a:=a xor b; Writeln(a,' ',b)
end.
Язык PascalABC.NET дополнительно предлагает простые обмена.
4. Обмен при процедуры Swap
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
Swap(a,b); Writeln(a,' ',b)
end.
5. Обмен на основе кортежного присваивания
var
a,b:integer;
begin
a:=10; b:=20; Writeln(a,' ',b);
(a,b):=(b,a); Writeln(a,' ',b)
end.
def automate(n)
a = n / 1000
b = n / 100 % 10
c = n / 10 % 10
d = n % 10
t = [a*b, c*d]
return (t.max.to_s + t.min.to_s).to_i
end
def zadanie()
for i in 1000..9999
t = automate(i)
p [t, i] if t == 174
end
end
# Примеры применения
zadanie()
ответ - нет таких цифр
Аналитическое решение
174 можно разложить на 1 + 74 и 17 + 4
по правилу 2 это только 17 + 4
17 - произведение двух чисел, но 17 простое и произведение только 17 и 1. 17 не может быть одной цифрой
Значит вариант 174 невозможен при таких правилах