Операнды арифметического выражения записаны в системе счисления с основанием 22.
27x9887622 + 26x5122 + 711x522
В записи чисел переменной x обозначена неизвестная цифра из алфавита 22-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 21. Для найденного x вычислите частное от деления значения арифметического выражения на 21 и укажите его в ответе в десятичной системе счисления.
Основание системы счисления указывать не нужно.
ИЛИ
Значение арифметического выражения
3 · 31258 + 2 · 6257 − 4 · 6256 + 3 ∙ 1255 − 2 ∙ 254 − 2025
записали в системе счисления с основанием 25. Сколько значащих нулей содержится в этой записи?
ИЛИ
Значение арифметического выражения 7170 + 7100 − x, где x — целое положительное число, не превышающее 2030, записали в 7-ричной системе счисления. Определите наибольшее значение x, при котором в 7-ричной записи числа, являющегося значением данного арифметического выражения, содержится ровно 71 нуль.
В ответе запишите число в десятичной системе счисления.
Приведём решение на языке Python.
s = sorted('0123456789qwertyuiopasdfghjklzxcvbnm')
for x in s[:23]:
x1 = '27' + str(x) + '98876'
x2 = '26' + str(x) + '51'
x3 = '711' + str(x) + '5'
res = int(x1, 22) + int(x2, 22) + int(x3, 22)
if res % 21 == 0:
res = res // 21
print(res)
break
Ответ: 276296118.
Приведём решение Сергея Донец на PascalABC.NET:
uses School;
begin var ass:=(('0'..'9')+('A'..'Z')).ToArray;
var p:=22;//Основание системы счисления
var d:=p-1;
foreach var x in ass[:p] do begin
var m := Dec($'27{x}98876', p);
var n := Dec($'26{x}51', p); var k := Dec($'711{x}5', p);
var s:=m+n+k;
if s mod d=0 then begin Print(s div d);
exit;
end;
end;
end.
ИЛИ
Приведём решение на языке Python.
s = 3 * 3125**8 + 2 * 625**7 - 4 * 625**6 + 3 * 125**5 - 2 * 25**4 - 2025
count = 0
while s > 0:
if s % 25 == 0:
count += 1
s //= 25
print(count)
Ответ: 10.
Приведём решение Сергея Донец на PascalABC.NET:
uses School;
begin
( 3 * 3125bi ** 8 + 2 * 625bi ** 7
- 4 * 625bi ** 6 + 3 * 125bi ** 5
- 2 * 25bi ** 4 - 2025).digits(25)
.Count(x->x=0).Print;
end.
ИЛИ
Приведём решение на языке Python.
for x in range (2030, 1, -1):
t = 7**170 + 7**100 - x
c = 0
while t != 0:
if t % 7 == 0:
c += 1
t //= 7
if c == 71:
print(x)
exit()
Ответ: 2029.
Приведём решение Александра Козлова на языке Python.
def seven(n):
return str(n % 7) + seven(n // 7) if n else ''
for x in range(2030, 1, -1):
s = seven(7**170 + 7**100 - x)
if s.count('0') == 71:
print(x)
break
Приведём решение Сергея Донец на PascalABC.NET:
uses School;
begin
for var x:=2030 downto 1 do
if (7bi**170+7bi**100-x).Digits(7).CountOf(0)=71
then begin x.Print;exit;end;
end.

