Для построения ЭВМ двоичная система счисления оказалась более удобной. С технической точки зрения создать устройство с всего лишь двумя состояниями проще. (есть потенциал -1 \нет - 0)Для их представления достаточно иметь электронные схемы. Официальное рождение двоичной арифметики связывают с именем Г.В.Лейбница, который опубликовал статью, описывающию все арифметические действия над двоичными числами. Потом было более активное и глубокое изучение двоичной системы. Первые двоичные вычислительные машины построили во Франции и Германии. А утверждение двоичной системы в качестве общепринятой приконструировании ЭВМ состоялось уже под влиянием работы А.Бекса, Х. Гольдстайна и Дж.Фон Неймана о проекте первой ЭВМ с хранимой в памяти программой, написанной в 1946 году. В этой же работе и аргументирован переход к двоичной системе. Проще говоря 1 - есть сигнал, 0 - нет сигнала, намагниченный участок\ненамагниченный и т.д. и машине понятно и человеку можно разобраться, вот так и создали двоичный код, научились по нему программировать, сформулировали принципы, необязательно было все расписывать, главное знать принцип - значение каждой цифры "по месту" при переходе от младшего разряда к старшему увеличивается вдвое. А вот уж языки пограммирования расписываются
# Код на ruby 2.2.3p173 def zadanie(s) numbers = [] s.split(" ").each {|t| break if t == "2*109" numbers << t.to_i }
max = numbers[0] * numbers[4] for i in 0..numbers.size - 4 for j in i + 4..numbers.size - 1 p [i,j] m = numbers[i] * numbers[j] max = m if m % 2 == 1 and m > max end end
if max % 2 == 1 return max else return "IMPOSSIBLE" end end
# Примеры применения p zadanie("11 12 2 5 7 6 10 2 8 3 2*109 4")
Проще говоря 1 - есть сигнал, 0 - нет сигнала, намагниченный участок\ненамагниченный и т.д. и машине понятно и человеку можно разобраться, вот так и создали двоичный код, научились по нему программировать, сформулировали принципы, необязательно было все расписывать, главное знать принцип - значение каждой цифры "по месту" при переходе от младшего разряда к старшему увеличивается вдвое. А вот уж языки пограммирования расписываются
def zadanie(s)
numbers = []
s.split(" ").each {|t|
break if t == "2*109"
numbers << t.to_i
}
max = numbers[0] * numbers[4]
for i in 0..numbers.size - 4
for j in i + 4..numbers.size - 1
p [i,j]
m = numbers[i] * numbers[j]
max = m if m % 2 == 1 and m > max
end
end
if max % 2 == 1
return max
else
return "IMPOSSIBLE"
end
end
# Примеры применения
p zadanie("11 12 2 5 7 6 10 2 8 3 2*109 4")