46. Тип 14 № 73840 
Кодирование чисел. Системы счисления. Прямое сложение в СС
i
Значение арифметического выражения
4 · 724 + 6 · 713 + 5 · 494 + 2 · 3432 + 10 −x,
где x — натуральное число, записали в системе счисления с основанием 7. Определите наименьшее значение x, при котором в этой записи шестёрок будет больше, чем нулей.
В ответе запишите найденное значение x в десятичной системе счисления.
Решение. Приведём решение на языке Python.
for x in range(25*10**6,10**10):
s = 4 * 7**24 + 6 * 7**13 + 5 * 49**4 + 2 * 343**2 + 10 - x
t = ''
while s > 0:
t = t + str(s % 7)
s //= 7
if t.count('6') > t.count('0'):
print(x)
break
Ответ: 29059314.
Приведём решение Сергея Донец на PascalABC.NET:
Первая пара слагаемых имеет 7 в степени 24 и 13.
их сумма s1= 4000000000060000000000000.
вторая пара 7 в степени 8 и 6.
их сумма s2= 502000000. в десятичной 29059303.
третья пара 10 −x.
s1 - s2 - 10 => не меняет нули в конце. Поэтому надо вычесть ещё 1.
т. е. s1 - s2 - 11 тогда конечные ноли станут шестёрками. (cc7)
искомое х это s2 + 11. т. е. 29059303 + 11 = 29059314.
код на PascalABC.NET 3.11+ для расчётов и анализа:
uses School,sf;
begin
(4*7bi**24+6*7bi**13).Digits(7).jts('').Println;//4000000000060000000000000
(5*49bi**4+2*343bi**2).Digits(7).jts('').Println;//502000000
(5*49bi**4+2*343bi**2).Digits().jts('').Println;//29059303
(4*7bi**24+6*7bi**13+5*49bi**4+2*343bi**2+10-29059314).Digits(7).jts('').Println;//4000000000056666666666666
end.
Код на PascalABC.NET 3.11+ для подтверждения расчётов: подставляем найденный х:
uses School;
begin
var x:=(5*49bi**4 + 2*343bi**2 + 10 + 1);
var v:=(4*7bi**24 + 6*7bi**13 + 5*49bi**4 + 2*343bi**2 + 10 - x).Digits(7);
var k6:=v.CountOf(6);
var k0:=v.CountOf(0);
if k6>k0 then begin x.Print;exit;end;
end.
было -> стало
4000000000060000000000000
4000000000056666666666666
первые 10 нулей так и остались
вторые 13 нулей превратились в шестёрки.
ответ 29059314
Ответ: 29059314