首先考虑(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] 就是直线左方的点数。
sum{k = 0 to (q - 1) / 2} [p / q * k] 就是直线左方的点数。
如果gcd(p, q) = 1的话,这条直线上没有整点,所以不会重复计算。
相等的时候的数恰好是p * q 矩形的1/4。
答案当然是(p - 1) * (q - 1) / 4。//转自叉姐的话。。
相等的时候的数恰好是p * q 矩形的1/4。
答案当然是(p - 1) * (q - 1) / 4。//转自叉姐的话。。
/************************************************************** Problem: 2659 User: BLADEVIL Language: Pascal Result: Accepted Time:0 ms Memory:220 kb ****************************************************************/ //By BLADEVIL var 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.