Задания
Версия для печати и копирования в MS Word
Тип 14 № 75251
i

В си­сте­ме счис­ле­ния с ос­но­ва­ни­ем p вы­пол­ня­ет­ся ра­вен­ство y27x + wy86 = xxz3y. Бук­ва­ми x, y, z и w обо­зна­че­ны не­ко­то­рые цифры из ал­фа­ви­та си­сте­мы счис­ле­ния с ос­но­ва­ни­ем p.

Опре­де­ли­те зна­че­ние числа xyzwp и за­пи­ши­те это зна­че­ние в де­ся­тич­ной си­сте­ме счис­ле­ния.

Спрятать решение

Ре­ше­ние.

За­ме­тим, ис­хо­дя из ис­поль­зо­ван­ных чисел, ос­но­ва­ние си­сте­мы счис­ле­ния p > 8. Раз скла­ды­ва­е­мые числа че­ты­рех­раз­ряд­ные, а сумма пя­ти­раз­ряд­ная, то про­ис­хо­дит пе­ре­нос цифры x в пятый раз­ряд, сле­до­ва­тель­но, x = 1. Тогда из млад­ше­го раз­ря­да по­лу­ча­ем, что y = 7 и пе­ре­но­са во вто­рой по стар­шин­ству раз­ряд не про­ис­хо­дит. Сле­до­ва­тель­но, 7p+8p = 13p, от­ку­да p = 7 + 8 – 3 = 12. Из сле­ду­ю­ще­го раз­ря­да, с уче­том пе­ре­но­са, z = 2 + 7 + 1 = 10. Пе­ре­но­са в стар­ший раз­ряд не про­ис­хо­дит. Окон­ча­тель­но, из стар­ше­го раз­ря­да 7p + wp = 11p, от­ку­да w = 6.

Таким об­ра­зом, xyzwp= 17A612 = 1 умно­жить на 12 в кубе плюс 7 умно­жить на 12 в квад­ра­те плюс 10 умно­жить на 12 в сте­пе­ни 1 плюс 6=2862.

 

При­ведём ре­ше­ние дан­ной за­да­чи на языке Python.

for p in range(9, 15):

for x in range(p):

for y in range(p):

for z in range(p):

for w in range(p):

s = y * (p**3) + 2 * (p**2) + 7 * (p**1) + x

r = w * (p**3) + y * (p**2) + 8 * (p**1) + 6

t = x * (p**4) + x * (p**3) + z * (p**2) + 3 * (p**1) + y

if s + r == t:

print(x * (p**3) + y * (p**2) + z * (p**1) + w)

 

Ответ: 2862.

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

d = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

for p in range(9,36):

for x in d[:p]:

for y in d[:p]:

for z in d[:p]:

for w in d[:p]:

if int(f'{y}27{x}',p)+int(f'{w}{y}86',p)==int(f'{x}{x}{z}3{y}',p):

print(int(f'{x}{y}{z}{w}',p))

 

При­ведём ре­ше­ние Сер­гея Донец на PascalABC.NET:

var d := (('0'..'9') + ('A'..'Z')).ToArray;

function Horner(s: string; baseN: integer): Integer;

begin Result := 0;

foreach var ch in s do

Result := Result * baseN + d.IndexOf(ch);

end;

begin

for var p:=9 to 36 do

foreach var x in d[:p] do

foreach var y in d[:p] do

foreach var z in d[:p] do

foreach var w in d[:p] do begin

var a := Horner($'{y}27{x}', p);

var b := Horner($'{w}{y}86', p);

var c := Horner($'{x}{x}{z}3{y}', p);

if a+b=c then begin

Println(Horner($'{x}{y}{z}{w}', p));

exit; end; end;

end.