В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
garanina2005
garanina2005
18.02.2022 18:04 •  Информатика

С 6 по , паскаль, только начали изучать тему, поэтому команды попроще


С 6 по , паскаль, только начали изучать тему, поэтому команды попроще

Показать ответ
Ответ:
Shaxrior
Shaxrior
19.08.2022 13:50
Последнее проверяемое число 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
0,0(0 оценок)
Ответ:
geo2015brosto
geo2015brosto
19.08.2022 13:50
N = X1*256 + Y1*16 + Z1
2N = X2*256 + Y2*16 + Z2
X1 + Y1 + Z1 = X2 + Y2 + Z2

Во-первых, X1 < 8, иначе число 2N в 16-ной записи станет 4-значным.
Можно написать такую программу поиска этих чисел
Начало
k = 0 ' Это счетчик чисел, которые мы ищем
Цикл по X1 от 1 до 7
    Цикл по Y1 от 0 до 15
        Цикл по Z1 от 0 до 15
            N = X1*256 + Y1*16 + Z1
            M = 2*N
            X2 = Int (M / 256)
            Y2 = Int ((M - X2*256) / 16)
            Z2 = M Mod 16
            Если (X1+Y1+Z1 = X2+Y2+Z2) And ((X1 = 2) Or (Y1 = 2) Or (Z1 = 2), То
                k = k + 1
            Конец Если
        Конец цикла по Z1
    Конец цикла по Y1
Конец цикла по X1
Вывод k
Конец
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота