меня есть две функции : n(x,y) - складывает числа х и y, m(x,y) - умножает х и у. Изначально есть две константы: 0 и 1. Допустим, если я хочу получить число 2, то я могу сделать n(1,1) и это будет мне стоить 6 символов. Для числа 4 = m(n(1,1),n(1,1)) цена 16 символов. Как через минимальное количество символов вывести любое число?(в частности мне нужно 708)
Мои предположения:
1) Поскольку у нас ф-ция: m(n(x,y), n(x,y)) - нужно найти экстремум функции, а точнее первую производную и приравнять к 0. При этих этих значениях x, y при минимальном количестве символов получите max(m(x,y))
2) Задача решается через программирование, а именно через
Вызов 2-х ф-ций m(x,y), n(x,y): 512+128+64+4=708,
m(2^0, 2^0)=2, символов 3*2^1=6
m(2^1, 2^1)=4, символов 3*2^2+2^2=16
m(2^2, 2^2)=16, символов 3*2^3+3*2^2=36
m(2^3, 2^3)=64, 3*2^4+3*2=56
m(2, 64)=128, символ ххх
m(4, 128)=512, символ ххх
a(4, 64)=68, символ 7
a(68, 128)=196, символ 9
a(196, 512)=708, символ 10
Как закономерность засунуть в цикл for()?
переменные объявлять нельзя?
Я не про то. Нужно найти именно выражение из 01mn, при этом никакой фрагмент нельзя переиспользовать, так?
Обсуждают сегодня