Pagini recente » Cod sursa (job #574403) | Cod sursa (job #1729365) | Cod sursa (job #2616326) | Cod sursa (job #2075159) | Cod sursa (job #81304)
Cod sursa(job #81304)
type tomb=array[1..100] of word;
var tmh,tmsz,v1h,v2h,vh:tomb;
m,n,db,x,y,o,i,j,z:longint;
f:text;
ok:boolean;
procedure felbontm;
var i,k:word;
begin
i:=2;
db:=0;
while m<>1 do begin
k:=0;
if m mod i=0 then begin
db:=db+1;
while m mod i =0 do begin
m:=m div i;
k:=k+1;
end;
tmsz[db]:=i;
tmh[db]:=k;
end;
i:=i+1;
end;
end;
procedure felbont(var v:tomb;x:longint);
var i,k:word;
begin
i:=1;
while i<=db do begin
k:=0;
v[i]:=0;
if x mod tmsz[i]=0 then begin
while x mod tmsz[i]=0 do begin
x:=x div tmsz[i];
k:=k+1;
end;
v[i]:=k;
end;
i:=i+1;
end;
end;
begin
assign(f,'pascal.in');
reset(f);
readln(f,n,m);
close(f);
n:=n+1;
felbontm;
o:=0;
z:=(n div 2) -1;
for i:=1 to z do begin
ok:=true;
x:=n-i;
y:=i;
felbont(v1h,x);
for j:=1 to db do vh[j]:=vh[j]+v1h[j];
felbont(v2h,y);
for j:=1 to db do vh[j]:=vh[j]-v2h[j];
for j:=1 to db do
if tmh[j]>vh[j] then ok:=false;
if ok then o:=o+1;
end;
o:=2*o;
assign(f,'pascal.out');
rewrite(f);
if odd(n) then begin
i:=i+1;
ok:=true;
x:=n-i;
y:=i;
felbont(v1h,x);
for j:=1 to db do vh[j]:=vh[j]+v1h[j];
felbont(v2h,y);
for j:=1 to db do vh[j]:=vh[j]-v2h[j];
for j:=1 to db do
if tmh[j]>vh[j] then ok:=false;
if ok then o:=o+1;
writeln(f,o);
close(f);
end
else begin
writeln(f,o);
close(f);
end;
end.