首先考虑(0, 0)到(p, q)这条直线。
y = q / p * x。
sum{k = 0 to (p - 1) / 2} [q / p * k] 就是直线下方的点数。sum{k = 0 to (q - 1) / 2} [p / q * k] 就是直线左方的点数。
如果gcd(p, q) = 1的话,这条直线上没有整点,所以不会重复计算。 相等的时候的数恰好是p * q 矩形的1/4。 答案当然是(p - 1) * (q - 1) / 4。//转自叉姐的话。。
/************************************************************** Problem: 2659 User: BLADEVIL Language: Pascal Result: Accepted Time:0 ms Memory:220 kb****************************************************************/ //By BLADEVILvar q, p :int64;begin read(q,p); if p=q then writeln(p*q div 4) else writeln((p-1)*(q-1) div 4);end.