Задача 5918. Источник: Поляков. Задание КИМ 14
(М. Ишимов) Операнды арифметического выражения записаны в системе счисления с основанием 16:
8569x16 + 12x4816
В записи чисел переменной x обозначена неизвестная цифра из алфавита 16-ричной системы счисления. Определите наибольшее значение x, при котором у значения данного арифметического выражения, записанного в 8-ричной системе счисления, встречается не более двух чётных цифр. Для найденного значения x запишите значение выражения в восьмеричной системе счисления. Основание системы счисления указывать не нужно.
Решение
Python
result = ""
for x in range(16):
n1 = 8 * 16 ** 4 + 5 * 16 ** 3 + 6 * 16 ** 2 + 9 * 16 + x
n2 = 16 ** 4 + 2 * 16 ** 3 + x * 16 ** 2 + 4 * 16 + 8
n = n1 + n2
k = 0
s = ""
while n > 0:
if n % 2 == 0:
k += 1
s = str(n % 8) + s
n //= 8
if k <= 2:
result = s
print(result)
PascalABC
var
x, n, n1, n2, k: Integer;
res, s: String;
begin
for x := 0 to 15 do
begin
n1 := 8 * 16 * 16 * 16 * 16 + 5 * 16 * 16 * 16 + 6 * 16 * 16 + 9 * 16 + x;
n2 := 16 * 16 * 16 * 16 + 2 * 16 * 16 * 16 + x * 16 * 16 + 4 * 16 + 8;
n := n1 + n2;
s := '';
k := 0;
while n > 0 do
begin
if n mod 2 = 0 then
k := k + 1;
s := chr(n mod 8 + 48) + s;
n := n div 8;
end;
if k <= 2 then
res := s;
end;
Writeln(res);
end.
C++
#include <iostream>
using namespace std;
int main()
{
string res = "";
for (int x = 0; x < 16; x++)
{
int n1 = 8 * 16 * 16 * 16 * 16 + 5 * 16 * 16 * 16 + 6 * 16 * 16 + 9 * 16 + x;
int n2 = 16 * 16 * 16 * 16 + 2 * 16 * 16 * 16 + x * 16 * 16 + 4 * 16 + 8;
int n = n1 + n2;
string s = "";
int k = 0;
while (n > 0)
{
if (n % 2 == 0)
k++;
s = (char)(n % 8 + 48) + s;
n /= 8;
}
if (k == 2)
res = s;
}
cout << res << endl;
}
Ответ
2275735