Запись некоторого натурального числа X в шестнадцатеричной системе счисления имеет ровно три значащих разряда. Это число увеличили в два раза, и оказалось, что запись получившегося числа Y в шестнадцатеричной системе также...

     Запись некоторого натурального числа X в шестнадцатеричной системе счисления имеет ровно три значащих разряда. Это число увеличили в два раза, и оказалось, что запись получившегося числа Y в шестнадцатеричной системе также имеет ровно три значащих разряда, причем сумма цифр шестнадцатеричной записи исходного числа X равна сумме цифр шестнадцатеричной записи полученного числа Y. Сколько существует таких чисел X, которые удовлетворяют указанным условиям и при этом содержат хотя бы одну цифру 2 в своей шестнадцатеричной записи? В ответе укажите целое число. Нужно составить программу, которая автоматически переберет все числа от 100 до FFF
Гость
Ответ(ы) на вопрос:
Гость
Последнее проверяемое число 7FF, поскольку большее число при удвоении будет четырехзначным, нарушая условие задания. procedure Analyze(n: integer; var sd: integer; var has2: boolean); {Для заданного целого n возвращает:   sd - сумму цифр в шестнадцатиричном представлении;   has2 - true, если среди шестнадцитиричных цифр имеется хотя бы одна двойка.} const   mask = $00F; var   i, r: integer; begin   has2 := false;   sd := 0;   for i := 1 to 3 do   begin     r := (n and mask);     has2 := (has2 or (r = 2));     sd := sd + r;     n := (n shr 4);   end end; function IsSuitable(n: integer): Boolean; {Проверяет, удовлетворяет ли число n набору условий} var   s1, s2: integer;   has2, stub: boolean; begin   Analyze(n, s1, has2);   Analyze(2 * n, s2, stub);   IsSuitable := ((s1 = s2) and has2) end; var   i, n: integer; begin   n := 0;   for i := $100 to $7FF do     if IsSuitable(i) then n := n + 1;   Writeln('Найдено чисел- ', n) end. Результат выполнения программы: Найдено чисел- 23
Не нашли ответ?
Ответить на вопрос
Похожие вопросы