Длинная арифметика. Возведение в степень - QBasic

Узнай цену своей работы

Формулировка задачи:

даны N и M (N,M >100;N,M <999 ) вычислить по формуле: s=n^m+m^n
но только чтобы показала весь ответ

Решение задачи: «Длинная арифметика. Возведение в степень»

textual
Листинг программы
ret$ = "1": lhs$ = "3": n = 100
WHILE n
    IF n AND 1 THEN ret$ = mul$(ret$, lhs$)
    lhs$ = mul$(lhs$, lhs$): n = n \ 2
WEND
FOR i = 1 TO LEN(ret$)
    buf$ = MID$(ret$, i, 1) + buf$
NEXT
PRINT buf$
FUNCTION mul$ (lhs$, rhs$)
ret$ = STRING$(LEN(lhs$ + rhs$), "0")
FOR i = 1 TO LEN(lhs$)
    j = 1: carry = 0
    WHILE j <= LEN(rhs$) OR carry
        a = VAL(MID$(lhs$, i, 1))
        IF j <= LEN(rhs$) THEN b = VAL(MID$(rhs$, j, 1)) ELSE b = 0
        cur = VAL(MID$(ret$, i + j - 1, 1)) + a * b + carry
        MID$(ret$, i + j - 1, 1) = LTRIM$(STR$(cur MOD 10))
        carry = cur \ 10: j = j + 1
    WEND
NEXT
mul$ = del$(ret$)
END FUNCTION
FUNCTION del$ (ret$)
FOR i = LEN(ret$) TO 1 STEP -1
    IF MID$(ret$, i, 1) <> "0" OR LEN(buf$) <> 0 OR i = 1 THEN
        buf$ = MID$(ret$, i, 1) + buf$
    END IF
NEXT
del$ = buf$
END FUNCTION

Объяснение кода листинга программы

В этом коде выполняется возведение в степень. Список действий:

  1. Входные данные:
    • ret$ = 1 (результат возведения в степень, инициализируется как 1)
    • lhs$ = 3 (первая переменная для возведения в степень, инициализируется как 3)
    • n = 100 (количество разрядов, которое нужно возвести в степень, инициализируется как 100)
  2. Используется цикл WHILE, который выполняется до тех пор, пока n не станет равным 0:
    • Если n и 1 одновременно истинны (то есть n не равно 0), то выполняется операция умножения: ret$ = ret$ * lhs$
    • lhs$ умножается на самого себя, и n делится на 2 (что эквивалентно делению на 2 в степени, так как цикл выполняется до тех пор, пока n не станет четным)
  3. Используется цикл FOR, который выполняется от 1 до длины строки ret$:
    • Для каждого символа в строке ret$ добавляется его значение к результату (то есть к строке buf$)
  4. Результат выводится на экран с помощью функции PRINT
  5. Функция mul$ используется для умножения двух строк (представляющих числа в десятичной системе счисления) и возвращает результат в виде строки:
    • Строка результата инициализируется как 0 заданной длины (длина суммы двух входных строк)
    • Для каждого символа в строках lhs$ и rhs$:
      • Если символ в lhs$ не равен 0, то выполняется операция умножения на соответствующий символ в rhs$
      • Если символ в rhs$ равен 0, то его значение игнорируется
      • Полученное значение записывается в соответствующую позицию в строке результата
      • Если в процессе умножения возникает перенос, то он учитывается в следующей итерации цикла
  6. Функция del$ используется для удаления лишних нулей в конце строки:
    • Для каждого символа в строке, начиная с конца:
      • Если символ не равен 0 или в строке buf$ есть ненулевой символ, или текущий индекс равен 1, то этот символ добавляется в строку buf$
  7. Результат выводится на экран с помощью функции PRINT

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы