Загрузка данных


def add_in_base(a: str, b: str, base: int):
    """Поразрядное сложение двух чисел в системе с основанием base (2..10).
    Возвращает (результат, количество переносов)."""
    a, b = a[::-1], b[::-1]          # идём от младшего разряда к старшему
    n = max(len(a), len(b))
    result = []
    carry = 0
    carries_count = 0

    for i in range(n):
        da = int(a[i]) if i < len(a) else 0
        db = int(b[i]) if i < len(b) else 0
        s = da + db + carry
        result.append(str(s % base))  # цифра разряда
        carry = s // base             # перенос в следующий разряд
        if carry:
            carries_count += 1

    if carry:                         # перенос из старшего разряда
        result.append(str(carry))

    return "".join(reversed(result)), carries_count


base = 8
num1 = "567"
num2 = "245"

res, carries = add_in_base(num1, num2, base)

print(f"Основание системы счисления: {base}")
print(f"{num1} + {num2} = {res} (в системе с основанием {base})")
print(f"Количество переносов: {carries}")

# Проверка через десятичную систему
check = int(num1, base) + int(num2, base)
print(f"Проверка: {int(num1, base)} + {int(num2, base)} = {check} (dec), "
      f"результат программы в dec = {int(res, base)}")
print("Результат верный" if check == int(res, base) else "Ошибка!")