var
n,m,ans1,i1:longint;
i,j,ans:int64;
v:Array[1..200]of longint;
begin
assign(input,'gift.in');reset(input);
assign(output,'gift.out');rewrite(output);
while true do
begin
inc(ans1);
readln(n,m);
if (n=0)and(m=0) then
halt;
i:=n mod m;
j:=n div m;
ans:=0;
if n+n-1<m then
begin
writeln(0);
continue;
end;
if m=2 then
begin
if i=1 then
ans:=((j*(j+1)) div 2)+((j*(j-1))div 2);
if i=0 then
ans:=(j*(j-1));
writeln(ans);
continue;
end;
if ((m-1)mod 2)=0 then
begin
if i<=((m-1)div 2) then
ans:=j*(j+1)*i+j*j*(((m-1)div 2)-i);
if i>((m-1)div 2) then
ans:=sqr(j+1)*(i-((m-1)div 2))+j*(j+1)*((m-1)-i);
end;
if ((m-1)mod 2)=1 then
begin
if i<=((m-2) div 2) then
begin
ans:=j*(j+1)*i+j*j*(((m-2)div 2)-i);
ans:=ans+((j*(j-1)) div 2);
end;
if i=((m-2)div 2)+1 then
begin
ans:=j*(j+1)*(i-1)+((j*(j+1)) div 2);
end;
if i>((m-2) div 2)+1 then
begin
ans:=sqr(j+1)*(i-((m-2) div 2)-1)+j*(j+1)*((m-1)-i);
ans:=ans+(j*(j+1)) div 2;
end;
end;
ans:=ans+((j*(j-1)) div 2);
writeln(ans);
end;
close(input);
close(output);
end.