{这个版本比上个版本复杂,但是避免了溢出且速度也很快}
{$ASMMODE INTEL}
var n,r:longword;
m:longint;
begin
readln(n,m);//读取初始值
asm
mov eax,0
mov edx,1
mov ecx,n//设计数器为n
@:
add eax,edx//把edx加到eax上
@s:
sub eax,m//尝试减去m
jns @s//如果不是负数则跳转(再减)
add eax,m//加上m(eax一定是负数)
xor eax,edx
xor edx,eax
xor eax,edx//以上三条指令交换eax和edx的值
loop @//如果技术器ecx不为零则跳转
mov r,eax
end;
writeln(r);
end.