Задания ЕГЭ по информатике можно решать на языке программирования Java. Рассмотрим решение пятого задания на нескольких примерах.
Задача 1: Обработка натурального числа
Условие: Автомат обрабатывает натуральное число n следующим образом: строится двоичная запись числа n, затем запись переворачивается (читается справа налево, ведущие нули отбрасываются), получившееся число переводится в десятичную систему счисления и выводится на экран. Найти наибольшее число, не превышающее 1000, после обработки автоматом дающее результат 23.
Решение:
Для решения задачи переберём числа от 1000 до 1, уменьшая значение на единицу на каждой итерации. Для каждого числа выполним указанные в условии преобразования:
- Перевод в двоичную систему: Используем метод Integer.toBinaryString(n).
- Переворачивание строки: Используем StringBuilder и метод reverse().
- Перевод из двоичной системы в десятичную: Используем метод Integer.parseInt(binary, 2).
- Проверка результата: Если результат равен 23, выводим исходное число n и прерываем цикл.
for (int n = 1000; n > 0; n--) {
String binary = Integer.toBinaryString(n);
StringBuilder sb = new StringBuilder(binary);
String reversedBinary = sb.reverse().toString();
int result = Integer.parseInt(reversedBinary, 2);
if (result == 23) {
System.out.println(n);
break;
}
}
Результат: 928
Задача 2: Дописывание разрядов
Условие: На вход подаётся натуральное число n. Строится двоичная запись числа. Справа дописываются два разряда: «01», если n чётное, и «10», если n нечётное. Указать минимальное число n, после обработки которого автомат получает число больше 138.
Решение:
Перебираем числа от 1 до 1000, увеличивая значение на каждой итерации. Для каждого числа:
- Переводим в двоичную систему.
- Дописываем «01» или «10» в зависимости от чётности.
- Переводим обратно в десятичную систему.
- Проверяем, больше ли результат 138. Если да, выводим исходное число n и прерываем цикл. Используем тернарный оператор для упрощения кода.
for (int n = 1; n <= 1000; n++) {
String binary = Integer.toBinaryString(n);
binary += (n % 2 == 0) ? "01" : "10";
int result = Integer.parseInt(binary, 2);
if (result > 138) {
System.out.println(n);
break;
}
}
Результат: 35
Задача 3: Подсчёт единиц и дописывание разряда
Условие: Строится двоичная запись числа. Складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа.
Решение:
Для подсчёта единиц заменим все единицы в двоичной строке на пустую строку и найдём разницу в длинах исходной и модифицированной строк. Остаток от деления количества единиц на 2 дописываем к двоичной строке.
for (int n = 1; n <= 1000; n++) {
String binary = Integer.toBinaryString(n);
int count = binary.length() - binary.replace("1", "").length();
binary += (count % 2 == 0) ? "0" : "1";
int result = Integer.parseInt(binary, 2);
if (result > 1008) {
System.out.println(n);
break;
}
}
Результат: 120
Задача 4: Дописывание последних двух цифр или остатка
Условие: Строится двоичная запись числа. Если число n делится на 3, то дописываются две последние двоичные цифры. Если нет, то остаток от деления на 3 умножается на 3, переводится в двоичную запись и дописывается. Найти минимальное число, результат обработки которого не меньше 195.
Решение:
Для нахождения минимального числа используем алгоритм поиска минимума. Обратите внимание на обработку случая с отрицательным индексом при извлечении последних двух цифр.
int min = Integer.MAX_VALUE;
for (int n = 1; n <= 1000; n++) {
String binary = Integer.toBinaryString(n);
if (n % 3 == 0) {
int len = binary.length();
binary += binary.substring(Math.max(0, len - 2));
} else {
binary += Integer.toBinaryString((n % 3) * 3);
}
int result = Integer.parseInt(binary, 2);
if (result >= 195) {
min = Math.min(min, n);
}
}
System.out.println(min);
Результат: 199
Приведенные примеры демонстрируют решение пятого задания ЕГЭ по информатике на языке Java. Использование стандартных библиотек Java позволяет эффективно обрабатывать двоичные числа и строки. Понимание алгоритмов и умение применять стандартные функции являются ключевыми для успешного решения подобных задач.