profile
Размещено 5 лет назад по предмету Информатика от Mimiminik

Написать программу на 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

  1. Ответ на вопрос
    Ответ на вопрос дан smnoregrets
    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.
    1. Ответ на вопрос
      Ответ на вопрос дан smnoregrets
      программа написана для PascalABC
    2. Ответ на вопрос
      Ответ на вопрос дан smnoregrets
      но должна идти и на TurboPascal
    3. Ответ на вопрос
      Ответ на вопрос дан smnoregrets
      Чтобы вывести ответ в файл надо в конце дописать
    4. Ответ на вопрос
      Ответ на вопрос дан smnoregrets
      Assign(f,'output.txt');
      ReWrite(f);
      Write(f, so);
      close(f);
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.