PKU JudgeOnline 2800 -- Joseph's Problem

id:Ozyさんのところで紹介されていた問題。
この問題のおかげで、PKUで64bit整数を使う時の小技を一つ身につけました。

_int64 r,n;
main(t,k){
  for(scanf("%d%d",&t,&k);n=t;r-=(t-n)*(k%n+k%~t))
    t=k/(k/n+1);
  printf("%I64d",r/2);
}

id:colunさんのコードと印象が違うのは等差数列の和の求め方の違いですね。
で、colunさんのコードで知ったんですが、__int64じゃなく_int64で通るのかー、と。
これって周知の事実なんだろか。むむむ。