Pagini recente » Cod sursa (job #253668) | Cod sursa (job #3206876) | Cod sursa (job #4197) | Cod sursa (job #1102606) | Cod sursa (job #5046)
Cod sursa(job #5046)
var f:text;
i,n,p,fa,sol:longint;
m:byte;
r,r2:array[0..5000000] of longint;
begin
assign(f,'pascal.in');
reset(f);
readln(f,n,m);
close(f);
if m=6 then begin
for i:=1 to n do begin
p:=i;
while (p mod 2=0) do begin
p:=p div 2;
inc(fa);
end;
r[i]:=fa+r[i-1];
fa:=0;
p:=i;
while (p mod 3=0) do begin
p:=p div 3;
inc(fa);
end;
r2[i]:=fa+r2[i-1];
fa:=0;
end;
for i:=1 to ((n-1) div 2) do
if (r[n]-r[n-i]-r[i]>0) and
(r2[n]-r2[n-i]-r2[i]>0) then inc(sol);
sol:=sol*2;
if n mod 2=0 then
if (r[n]-2*r[n div 2]>0) and
(r2[n]-2*r2[n div 2]>0) then inc(sol);
end
else if m=4 then begin
for i:=1 to n do begin
p:=i;
while (p mod 2=0) do begin
p:=p div 2;
inc(fa);
end;
r[i]:=fa+r[i-1];
fa:=0;
end;
for i:=1 to ((n-1) div 2) do
if r[n]-r[n-i]-r[i]>1 then inc(sol);
sol:=sol*2;
if n mod 2=0 then
if r[n]-2*r[n div 2]>1 then inc(sol);
end else begin
for i:=1 to n do begin
p:=i;
while (p mod m=0) do begin
p:=p div m;
inc(fa);
end;
r[i]:=fa+r[i-1];
fa:=0;
end;
for i:=1 to ((n-1) div 2) do
if r[n]-r[n-i]-r[i]>0 then inc(sol);
sol:=sol*2;
if n mod 2=0 then
if r[n]-2*r[n div 2]>0 then inc(sol);
end;
assign(f,'pascal.out');
rewrite(f);
writeln(f,sol);
close(f);
end.