Сколько различных цифр восьмеричной записи числа 2^102 + 2^100 + 2^85 + 2^17 исполнитель калькулятор преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить
2. Прибавить 2
Программа для исполнителя Калькулятор - это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 13 и при этом траектория вычислений содержит число 7?
(см. объяснение)
Объяснение:
Ниже показано решение на различных языках программирования + аналитический метод.
Java:
System.out.println(BigInteger.valueOf(2).pow(102).add(BigInteger.valueOf(2).pow(100)).add(BigInteger.valueOf(2).pow(85)).add(BigInteger.valueOf(2).pow(17)).toString(8));
Pascal:
##
var res: BigInteger := BigInteger.Add(BigInteger.Add(BigInteger.Add(BigInteger.Pow(BigInteger.Parse('2'),102),BigInteger.Pow(BigInteger.Parse('2'),100)),BigInteger.Pow(BigInteger.Parse('2'),85)),BigInteger.Pow(BigInteger.Parse('2'),17));
var s: string := '';
while(not res.IsZero) do
begin
s:= BigInteger.Remainder(res,8).ToString+s;
res:= BigInteger.Divide(res,BigInteger.Parse('8'));
end;
writeln(s);
Python:
a = 2**102+2**100+2**85+2**17
s = ''
while(a>0):
s=str(a%8)+s
a//=8
print(s)
Аналитический метод:
Нужно представить все, как <число>*8^[степень]. Заметим, что:
Результат полученный во всех случаях одинаковый:
12000020000000000000000000000400000
Это означает, что всего в числе встречается 4 различные цифры.
Задание выполнено!