Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
program nagy;
type nagyszam=record jegy:array[0..1000] of byte; h:integer; end;
var n,m,o:nagyszam; s:string;
procedure init(var n:nagyszam);
var i:integer;
begin
n.h:=1;
for i:=0 to 1000 do n.jegy[i]:=0;
end;
procedure initl(var n:nagyszam; l:longint);
begin
init(n);
n.h:=0;
if l=0 then n.h:=1 else begin
while l>0 do begin
inc(n.h);
n.jegy[n.h]:=l mod 10;
l:=l div 10;
end; end; end;
procedure inits(var n:nagyszam; s:string);
var liba:integer;
begin
init(n);
n.h:=0;
while length(s)>0 do begin
inc(n.h);
val(s[length(s)],n.jegy[n.h],liba);
delete(s,length(s),1);
end;
end;
procedure ki(n:nagyszam);
var i:integer;
begin
for i:=n.h downto 1 do write(n.jegy[i]); writeln;
end;
procedure nagyit(var n:nagyszam; l:longint);
var j:integer;
begin
n.h:=n.h+l;
for j:=n.h downto l+1 do n.jegy[j]:=n.jegy[j-l];
for j:=1 to l do n.jegy[j]:=0;
end;
function ad(a,b:nagyszam):nagyszam;
var c:nagyszam; i,r:integer;
begin
init(c);
r:=0;
for i:=1 to 1000 do begin
c.jegy[i]:=(a.jegy[i]+b.jegy[i]+r) mod 10;
r:=(a.jegy[i]+b.jegy[i]+r) div 10;
if (c.jegy[i]>0) then c.h:=i;
end;
ad:=c;
end;
function szor(a,b:nagyszam):nagyszam;
var i,j:integer; c:nagyszam;
begin
init(c);
for i:=1 to b.h do begin
for j:=1 to b.jegy[i] do begin
c:=ad(c,a);
end;
nagyit(a,1);
end;
szor:=c;
end;
function felez(a:nagyszam):nagyszam;
var i,r:integer;
begin
init(felez);
r:=0;
for i:=a.h downto 1 do begin
felez.jegy[i]:=(a.jegy[i]+r*10) div 2;
r:=(a.jegy[i]+r*10) mod 2;
end;
if felez.jegy[a.h]=0 then felez.h:=a.h-1 else felez.h:=a.h;
if felez.h=0 then felez.h:=1;
end;
procedure hkpe(a:nagyszam);
var c:nagyszam;
begin
while (a.h>1) or (a.jegy[1]>1) do begin
ki(a);
if (a.jegy[1] mod 2) = 0 then a:=felez(a) else begin
initl(c,3); a:=szor(a,c); initl(c,1); a:=ad(a,c);
end;
end;
ki(a);
end;
begin
readln(s);
inits(n,s); hkpe(n);
end.