Значение арифметического выражения
4 · 724 + 6 · 713 + 4 · 494 + 5 · 3432 + 20 − x,
где x — натуральное число, записали в системе счисления с основанием 7. Определите наименьшее значение x, при котором в этой записи шестёрок будет больше, чем нулей.
В ответе запишите найденное значение x в десятичной системе счисления.
Приведём решение на языке Python.
for x in range(20*10**6,10**10):
s = 4 * 7**24 + 6 * 7**13 + 4 * 49**4 + 5 * 343**2 + 20 - x
t = ''
while s > 0:
t = t + str(s % 7)
s //= 7
if t.count('6') > t.count('0'):
print(x)
break
Ответ: 23647470.
Приведём решение Сергея Донец:
Первая пара слагаемых имеет 7 в степени 24 и 13.
их сумма s1= 4000000000060000000000000.
вторая пара 7 в степени 8 и 6.
их сумма s2= 405000000. в десятичной 23647449.
третья пара 20 −x.
s1 - s2 - 20 => не меняет нули в конце. Поэтому надо вычесть ещё 1.
т. е. s1 - s2 - 21 тогда конечные нули станут шестёрками. (cc7)
искомое х это s2 + 21. т. е. 23647449 + 21 = 23647470.
код на PascalABC.NET 3.11+ для расчётов и анализа:
uses School,sf;
begin
(4*7bi**24+6*7bi**13).Digits(7).jts('').Println;
(4*49bi**4+5*343bi**2).Digits(7).jts('').Println;
(4*49bi**4+5*343bi**2).Digits().jts('').Println;
(4*7bi**24+6*7bi**13 + 4*49bi**4+5*343bi**2 + 20-23647470).Digits(7).jts('').Println;
end.
Код на PascalABC.NET 3.11+ для подтверждения расчётов: подставляем найденный х:
uses School;
begin
var x:=(4*49bi**4+5*343bi**2 + 20 + 1);
var v:=(4*7bi**24+6*7bi**13 + 4*49bi**4+5*343bi**2 + 20-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 нулей превратились в шестёрки.
ответ 23647470

