Другие языки программирования и технологии

составить программу вычисление 2**64(два в шестьдесят четвёртой степени), на паскале, с помощтью циклов

составить программу вычисление 2**64(два в шестьдесят четвёртой степени), на паскале, с помощтью циклов
*** Багдатик
*** Багдатик
878
var i: shortint;
r : longint; (или word, как у вас называется 4-байтное целое)
Begin
r := 1;
for i:=1 to 64 do r shl 1;
writeln(r);
readln;
End.
Кан Витя
Кан Витя
74 578
Лучший ответ
Dmitriy Zotov Переполнение случится.
*** Багдатик не работаут в фри пакале
На Delphi. FreePascal вроде должен съесть =)

program LongLongInt;

//{$APPTYPE CONSOLE}

type
TLongLongInt = packed array of 0..9;

function Add(a, b: TLongLongInt): TLongLongInt;
var
i: Integer;
begin
SetLength(Result, Succ((Length(a) + Length(b) + Abs(Length(a) - Length(b))) div 2));
SetLength(a, Succ((Length(a) + Length(b) + Abs(Length(a) - Length(b))) div 2));
SetLength(b, Succ((Length(a) + Length(b) + Abs(Length(a) - Length(b))) div 2));
Result[0] := 0;
for i := Low(Result) to Pred(High(Result)) do
begin
Result[i] := Result[i] + (a[i] + b[i]) mod 10;
Result[Succ(i)] := (a[i] + b[i]) div 10;
end;
while (Result[High(Result)] = 0) do
SetLength(Result, Pred(Length(Result)));
if Length(Result) = 0 then
SetLength(Result, 1);
end;

function Sqr(a: TLongLongInt): TLongLongInt;
begin
Result := Add(a, a);
end;

var
i: Integer;
a: TLongLongInt;

begin
SetLength(a, 1);
a[0] := 2;
for i := 2 to 64 do
a := Sqr(a);
Write('2^64 = ');
for i := High(a) downto Low(a) do
Write(a[i]);
ReadLn;
end.
Да не парьте себе и людям мозг!
Тупо перемножением в PascalABC.NET — 1 картинка.
На второй картинке код ещё короче и быстрее ;–)
Если скажете, какой тип вы собираетесь использовать для хранения результата, --имеет смысл разговаривать дальше.

Вот такая двоичная штука получается:

$ echo "obase=2;2^64" | bc
10000000000000000000000000000000000000000000000000000000000000000

Или в шестнадцатеричной:

$ echo "obase=16;2^64" | bc
10000000000000000
Dmitriy Zotov
Dmitriy Zotov
54 823
*** Багдатик логические