
Напишите программы для сложения и вычитания длинных чисел.


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




Конечно, вот примеры программ на Python для сложения и вычитания длинных чисел:
Сложение длинных чисел:
```python def add_long_numbers(num1, num2): # Преобразуем числа в строки и находим их длины len1, len2 = len(num1), len(num2) # Выравниваем числа по длине, дополняя нулями слева if len1 > len2: num2 = '0' * (len1 - len2) + num2 else: num1 = '0' * (len2 - len1) + num1 # Инициализируем переменные для хранения результата и переноса result = '' carry = 0 # Идем справа налево по цифрам и складываем их for i in range(len(num1) - 1, -1, -1): digit_sum = int(num1[i]) + int(num2[i]) + carry carry = digit_sum // 10 # Определяем перенос result = str(digit_sum % 10) + result # Добавляем цифру к результату # Если остался перенос, добавляем его к результату if carry: result = str(carry) + result return result
# Пример использования number1 = '12345678901234567890' number2 = '98765432109876543210' sum_result = add_long_numbers(number1, number2) print(f"Сумма чисел: {sum_result}") ```
Вычитание длинных чисел:
```python def subtract_long_numbers(num1, num2): # Преобразуем числа в строки и находим их длины len1, len2 = len(num1), len(num2) # Выравниваем числа по длине, дополняя нулями слева if len1 > len2: num2 = '0' * (len1 - len2) + num2 else: num1 = '0' * (len2 - len1) + num1 # Инициализируем переменные для хранения результата и заема result = '' debt = 0 # Идем справа налево по цифрам и вычитаем их for i in range(len(num1) - 1, -1, -1): digit_diff = int(num1[i]) - int(num2[i]) - debt if digit_diff < 0: digit_diff += 10 # Заем debt = 1 else: debt = 0 result = str(digit_diff) + result # Добавляем цифру к результату # Удаляем ведущие нули из результата result = result.lstrip('0') # Если результат пустой, значит числа равны if not result: result = '0' return result
# Пример использования number1 = '98765432109876543210' number2 = '12345678901234567890' difference_result = subtract_long_numbers(number1, number2) print(f"Разность чисел: {difference_result}") ```
Обе функции принимают две строки, представляющие длинные числа, и возвращают строку, содержащую результат операции. Важно помнить, что эти функции не обрабатывают отрицательные числа или числа с плавающей точкой.


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