Pagini recente » Cod sursa (job #2632271) | Cod sursa (job #381668) | Cod sursa (job #1963345) | Cod sursa (job #1263564) | Cod sursa (job #123600)
Cod sursa(job #123600)
const m=1000;
const baza=10000;
type nr_mare=array[0..50] of longint;
var x,y:array[1..1010] of nr_mare;
v:array[1..501] of longint;
n,i,j,k,c:longint;
unu:nr_mare;
function cmmdc(a,b:Longint):longint;
var r:longint;
begin
r:=a mod b;
while r<>0 do
begin
a:=b;
b:=r;
r:=a mod b;
end;
cmmdc:=b;
end;
procedure aduna(var a,b,c:nr_mare);
var i:longint;
begin
c[0]:=a[0];
if b[0]>c[0] then
c[0]:=b[0];
for i:=1 to c[0] do
c[i]:=a[i]+b[i];
for i:=1 to c[0] do
begin
c[i+1]:=c[i+1]+c[i] div 10;
c[i]:=c[i] mod 10;
end;
if c[c[0]+1]>0 then
inc(c[0]);
end;
procedure add(var a,b:nr_mare);
var t,i,aux:longint;
begin
i:=1;
t:=0;
while (i<=a[0])or(i<=b[0])or(t>0) do
begin
aux:=(a[i]+b[i]+t) mod baza;
t:=(a[i]+b[i]+t) div baza;
a[i]:=aux;
i:=i+1;
end;
a[0]:=i-1;
end;
procedure afisare(var a:nr_mare);
var aux,i:longint;
begin
write(a[a[0]]);
for i:=a[0]-1 downto 1 do
if a[0]=0 then
write('0000')
else
begin
aux:=a[i];
while aux*10<baza do
begin
write(0);
aux:=aux*10;
end;
write(a[i]);
end;
writeln;
end;
begin
assign(input,'indep.in');reset(input);
assign(output,'indep.out');rewrite(output);
readln(n);
for i:=1 to n do
readln(v[i]);
x[v[1],0]:=1;x[v[1],1]:=1;
y:=x;
unu[0]:=1;unu[1]:=1;
for i:=2 to n do
begin
fillchar(x,sizeof(x),0);
add(x[v[i]],unu);
for j:=1 to m do
begin
add(x[j],y[j]);
c:=cmmdc(v[i],j);
add(x[c],y[j]);
end;
y:=x;
end;
if (x[1,0]=0) then
x[1,0]:=1;
afisare(x[1]);
writeln;
close(input);close(output);
end.