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で通るのかー、と。
これって周知の事実なんだろか。むむむ。