Длинная арифметика (возведение в степень) - C (СИ)

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

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

Возведение 2 в степень N. Мой код на СИ. Выдаёт правильный результат, но при выводе добавляется куча мусора, берущаяся невесть откуда.
#include <stdio.h>
#include <stdlib.h>
#define K 10
int main()
{
    FILE *in;
    FILE *out;
    int A[K];
    int i,j,N;
 
    in=freopen("in.txt", "r", stdin);
    out=freopen("out.txt", "w", stdout);
    scanf("%d",&N);
 
    A[0]=1;
 
    for(i=1; i<=K-1; i++) A[i]=0;
 
    int k=0;
    for(i=0; i<=N-1; i++)
    {
        for(j=0; j<=K-1; j++)
        {
            A[j]=A[j]*2 + k;
            k=A[j] / 10;
        }
    }

for(i=0;i<=K-1;i++)
    {
       if(A[i] != 0) printf("%d", A[i]);
    }
fclose(in);
fclose(out);
return 0;
 
}

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

textual
Листинг программы
  int n= 1, k= 0;
  for(i= 0; i < N ; i++) {
    for (j= 0;  j<n; j++) {
      int a= A[j] * 2;
      A[j]= a%10 + k;
      k= a / 10;
    }
    if (k>0) { 
      A[j]= k; 
      n++; k--;
    }
    if (n >= MAX_D) return 1;
  }

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

  1. Задаются начальные значения переменных: n= 1, k= 0.
  2. Запускается цикл for для перебора чисел от 0 до N:
    • Задаются начальные значения переменных внутреннего цикла: j= 0.
    • Внутренний цикл for выполняется, пока j<n:
    • Переменная a получает значение A[j] * 2.
    • Значение a делится нацело на 10 и добавляется к A[j], сдвигая его вправо на k разрядов.
    • Переменная k получает значение остатка от деления a на 10.
    • Если k>0, то значение k добавляется в конец массива A, увеличивая n на 1 и уменьшая k на 1.
    • Если n >= MAX_D, то возвращается 1.
    • Если n < MAX_D, то после выхода из внутреннего цикла for выполняется проверка: если k>0, то цикл прерывается.
  3. Если n < MAX_D, то после выхода из внутреннего цикла for выполняется проверка: если n >= MAX_D, то возвращается 1.

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


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

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

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