Вопрос задан 07.04.2025 в 09:35. Предмет Информатика. Спрашивает Duysenbaev Islam.

Напишите программу, которая переводит переданное её целое число (возможно, отрицательное) в заданную систему счисления с любым основанием от 2 до 36. Используйте процедуру. Входные данные Входная строка содержит целое число N и основание системы счисления B , разделённые пробелом. Гарантируется, что 2 ≤ B ≤ 36 . Выходные данные Программа должна вывести представление переданного её числа N в системе счисления с основанием B . При записи чисел в системах с основанием большим 10 используются прописные латинские буквы. Примеры
Входные данные
13 3
Выходные данные
111
Входные данные
-34 18
Выходные данные
-1G

Перейти к ответам

Ответы на вопрос

Отвечает Габдуллина Фәния.

Чтобы решить задачу, нужно разработать программу, которая переводит целое число в систему счисления с любым основанием от 2 до 36. В таких системах для представления чисел используют цифры от 0 до 9 и буквы от A до Z. Например, для основания 16 используются цифры 0-9 и буквы A-F.

Для начала рассмотрим основные моменты, которые нужно учесть:

  1. Представление числа в системе счисления с основанием B. Число можно представить в системе счисления с помощью последовательных делений на основание B и сохранения остатков. Остатки при делении дают цифры для записи числа, начиная с младших разрядов.

  2. Обработка отрицательных чисел. Для отрицательных чисел просто добавляем знак "-" перед результатом.

  3. Использование символов для представления чисел. Для чисел от 10 и выше, в системе счисления с основанием больше 10, используются буквы A, B, C и т.д. до Z (для оснований до 36).

Ниже пример программы, которая решает эту задачу с использованием процедуры для перевода числа:

python
def convert_to_base(n, b): # Массив символов для представления цифр digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" # Если число равно нулю, сразу возвращаем '0' if n == 0: return "0" # Определяем знак числа sign = "-" if n < 0 else "" n = abs(n) # Массив для хранения цифр в новом основании result = [] # Процесс деления с остатком while n > 0: result.append(digits[n % b]) n //= b # Соединяем все цифры в строку, переворачиваем их, чтобы они шли от старшего разряда к младшему return sign + ''.join(reversed(result))

# Чтение входных данных n, b = input().split() n = int(n) b = int(b)

# Вывод результата print(convert_to_base(n, b))

Пояснение программы:

  1. Массив digits: В нем содержатся все возможные символы для представления цифр в системах счисления от 2 до 36.
  2. Проверка на ноль: Если входное число равно нулю, сразу возвращается строка "0".
  3. Определение знака: Если число отрицательное, мы сохраняем знак "-" и работаем с его абсолютным значением.
  4. Основная часть программы: Число делится на основание B, и остатки от деления дают цифры, которые добавляются в список result. После этого список переворачивается, чтобы цифры шли в правильном порядке, и к результату добавляется знак (если число было отрицательное).
  5. Вывод: После завершения обработки, результат выводится на экран.

Примеры:

Пример 1:

Ввод:

13 3

Программа переведет число 13 в систему счисления с основанием 3. После делений и остатков, получаем представление числа как 111.

Вывод:

111

Пример 2:

Ввод:

diff
-34 18

Число -34 будет преобразовано в систему счисления с основанием 18. Результат -1G.

Вывод:

diff
-1G

Этот код решает задачу с учетом всех возможных условий.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос