Cod sursa(job #5525)

Utilizator ProtomanAndrei Purice Protoman Data 12 ianuarie 2007 22:29:30
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.43 kb
var a,b:array[1..15] of byte; i,x,n,m,p:longint; f1,f2:text;
begin
assign(f1,'fact.in');
reset(f1);
assign(f2,'fact.out');
rewrite(f2);
read(f1,p);
x:=p+1;
if p=0 then write(f2,'1')
else if p=1 then write(f2,'5')
else if p=2 then write(f2,'10')
else if p=3 then write(f2,'15')
else if p=4 then write(f2,'20')
else if p=5 then write(f2,'-1')
else begin
for i:=1 to 15 do begin
if i=1 then begin a[i]:=p div 305175781; p:=p mod 305175781; end
else if i=2 then begin a[i]:=p div 61035156; p:=p mod 61035156; end
else if i=3 then begin a[i]:=p div 12207031; p:=p mod 12207031; end
else if i=4 then begin a[i]:=p div 2441406; p:=p mod 2441406; end
else if i=5 then begin a[i]:=p div 488281; p:=p mod 488281; end
else if i=6 then begin a[i]:=p div 97656; p:=p mod 97656; end
else if i=7 then begin a[i]:=p div 19531; p:=p mod 19531; end
else if i=8 then begin a[i]:=p div 3906; p:=p mod 3906; end
else if i=9 then begin a[i]:=p div 781; p:=p mod 781; end
else if i=10 then begin a[i]:=p div 156; p:=p mod 156; end
else if i=11 then begin a[i]:=p div 31; p:=p mod 31; end
else if i=12 then begin a[i]:=p div 6; p:=p mod 6; end;
if i=1 then begin b[i]:=x div 305175781; x:=x mod 305175781; end
else if i=2 then begin b[i]:=x div 61035156; x:=x mod 61035156; end
else if i=3 then begin b[i]:=x div 12207031; x:=x mod 12207031; end
else if i=4 then begin b[i]:=x div 2441406; x:=x mod 2441406; end
else if i=5 then begin b[i]:=x div 488281; x:=x mod 488281; end
else if i=6 then begin b[i]:=x div 97656; x:=x mod 97656; end
else if i=7 then begin b[i]:=x div 19531; x:=x mod 19531; end
else if i=8 then begin b[i]:=x div 3906; x:=x mod 3906; end
else if i=9 then begin b[i]:=x div 781; x:=x mod 781; end
else if i=10 then begin b[i]:=x div 156; x:=x mod 156; end
else if i=11 then begin b[i]:=x div 31; x:=x mod 31; end
else if i=12 then begin b[i]:=x div 6; x:=x mod 6; end;
end;
n:=0;
n:=n+a[1]*1220703125;
n:=n+a[2]*244140625;
n:=n+a[3]*48828125;
n:=n+a[4]*9765625;
n:=n+a[5]*1953125;
n:=n+a[6]*390625;
n:=n+a[7]*78125;
n:=n+a[8]*15625;
n:=n+a[9]*3125;
n:=n+a[10]*625;
n:=n+a[11]*125;
n:=n+a[12]*25;
n:=n+p*5;
m:=0;
m:=m+b[1]*1220703125;
m:=m+b[2]*244140625;
m:=m+b[3]*48828125;
m:=m+b[4]*9765625;
m:=m+b[5]*1953125;
m:=m+b[6]*390625;
m:=m+b[7]*78125;
m:=m+b[8]*15625;
m:=m+b[9]*3125;
m:=m+b[10]*625;
m:=m+b[11]*125;
m:=m+b[12]*25;
m:=m+x*5;
if m=n then write(f2,'-1')
else write(f2,n); end;
close(f1);
close(f2);
end.