• Написать программу на pascal.
    Условие
    Пусть имеется неотрицательное целое число, представленное в виде массива своих цифр.
    Требуется возвести его в некоторую заданную степень.

    Формат входного файла
    Первая строка входного файла "input.txt" представляет собой десятичную запись длинного целого числа A.
    Следующая строка содержит показатель степени n, в которую необходимо возвести указанное число.

    Формат выходного файла
    Выходной файл "output.txt" должен содержать результат возведения в степень, представленный в десятичной системе счисления.

    Ограничения
    0≤A≤10 в 50 степени, 0
    Примеры тестов
    Входной файл (input.txt)
    1) 10203756485819806252197658031528043601970
    2

    2) 55786
    17

    Выходной файл (output.txt)
    1) 104116646421909761950282879573175588809976767764774752111453905887721451787880900

    2) 490827381405222212342433355512086149590506305271663102056527621790991920279453696

Ответы 5

  • программа написана для PascalABC
    • Автор:

      rich21
    • 6 лет назад
    • 0
  • но должна идти и на TurboPascal
    • Автор:

      zackary
    • 6 лет назад
    • 0
  • Чтобы вывести ответ в файл надо в конце дописать
    • Автор:

      arnavgay
    • 6 лет назад
    • 0
  • Assign(f,'output.txt'); ReWrite(f); Write(f, so); close(f);
    • Автор:

      casey
    • 6 лет назад
    • 0
  • PROGRAM Power_Long;var     i:byte; // счетчик    si, so:string; // числа в виде строк    power:byte; //показатель степениfunction readFile(filename:string):string;var f:text;    s:string;begin  assign(f,filename);  Reset(f);  readln(f,s);  readln(f,power);  close(f);    readFile := Trim(s);end;function multiplyLong(s1:string; s2:string):string;var     i,j,k,l:byte; //счетчики    z:boolean; //    A,B,T,R:array [0..100] of byte; //массивы    carry:byte; //перенос при умножении и суммировании    rt:string;//результатbegin  // первая строка чисел в массив   l:=Length(s1);//  A := new byte[l+1];  A[0]:=l; //количество   for i:=l downto 1 do     A[l-i+1]:=ord(s1[i]) - 48;  // вторая строка чисел в массив   k:=Length(s2);//  B := new byte[k+1];  B[0]:=k; //количество   for i:=k downto 1 do     B[k-i+1]:=ord(s2[i]) - 48;      i:=l+k; // 999*9999=9989001, т.е. максимум 7знаков//  R := new byte[i+1]; //массив с результатом   R[0]:=i;//количество //  T := new byte[i+1];//temp - произведение A на один знак из B  for i:=1 to A[0] do begin        //T := умножение A на один знак из B    carry:=0;    for j:=1 to B[0] do begin      k:= A[i] * B[j] + carry;      carry := k div 10;      T[j]:= k mod 10;    end;    j:=j+1;    T[j]:=carry;    T[0]:=j;        // прибавление T к результату R    carry:=0;    for j:=1 to T[0] do begin      k := T[j] + R[j+i-1] + carry;      carry := k div 10;//перенос      R[j+i-1] := k mod 10;    end;  end;  rt:='';  z:=false;//проверка на ведущие нули  for i:= R[0] downto 1 do begin    if (R[i]>0) then begin      rt := rt + R[i];      z:=true;//все последущие нули надо добавить в число    end else       if (R[i]=0) and z then        rt := rt + R[i];          end;    multiplyLong := rt;end;BEGIN  si := readFile('input.txt');  so := multiplyLong(si, si); //возвели во вторую степень    // возведение в степень от 3 и выше умножением  for i:=3 to power do begin    so := multiplyLong(si, so);  end;  writeln( si, '^',power,' = ',so );END.
    answer img
    • Автор:

      genevieve
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years