Длинная арифметика.
Длинная арифметика позволяет для данных любой длины получить
результат арифметического действия над ними с сохранением всех
значащих разрядов, что недоступно в ТурбоПаскале.
Правила длинной арифметики:
- операнды хранятся поразрядно в двух массивах;
- арифметические действия эмулируются программным путем;
- результат записывается в массив поразрядно.
{Сложение чисел длиной до 100разрядов}
Var m1, m2: Array [1..100] of Integer;
mr: Array [1..230] of Integer;
a,b,c: String;
r,i,j,n: Integer;
Begin
Write('введите 1 слагаемое'); ReadLn(a);
Write('введите 2 слагаемое'); ReadLn(b);
n:=1;
For i:= Length(a) DownTo 1 Do
Begin m1[n]:=Ord(a[i])-48; n:=n+1; End;
n:=1;
For i:= Length(b) DownTo 1 Do
Begin m2[n]:=Ord(b[i])-48; n:=n+1; End;
{ 9 9 9 }
{ 8 8 8 }
For i:=1 To 100 Do {i=1 2 3 4 }
Begin
r:= (mr[i]+m1[i]+m2[i]); {17 18 18 1 }
mr[i]:= r Mod 10; { 7 8 8 1 }
mr[i+1]:=r Div 10; { 1 1 1 0 }
End; {[1][2] [2][3] [3][4] [4][5]}
{результат: 7881 }
For i:= 100 DownTo 1 Do If mr[i] <> 0 Then Break;
For j:= 1 To i Do c:=Chr(mr[j]+48)+c;{переворот 7881 ---> 1887 }
WriteLn(c);
ReadLn;
End.
1. Составить программу, имитирующую работу калькулятора с длинной
арифметикой: сложение, умножение, вычитание, целочисленное
деление, возведение в степень. Калькулятор должен работать с
числами длиной до 100 разрядов.
2. Возвести в квадрат число, состоящее из единиц длиной до 100
разрядов.
Пример. 11 ^2 = 121, 111111111 ^2 = 12345678987654321
Подсказка: Если n<=9 --> То зеркалка, Иначе длинная арифметика.
3. Составить программу-калькулятор позволяющую складывать, вычитать
и умножать целые числа записанные в двоичной системе счисления.
4. Определить делиться ли двоичное число на 5 (на 3).
5. Факториал n!= 1*2*3*...*n. Зная значение факториала n! найти n.
Значение n! может содержать до 255 символов.
Данные для задачи найти используя программу Калькулятор.
Достарыңызбен бөлісу: |