CF1485C Floor and Mod
题意简述
对于所有
题目分析
评蓝高了,CF 上都只有 1700。
使用瞪眼法容易发现以下几个性质:
-
-
- 对于任意合法的
b 取值,满足条件的(a, b) 最多只有b - 1 个(除0 以外,b 的余数只有b - 1 个)。
根据以上性质容易发现,能把一个
对于剩下的
考虑枚举这个商。由于是整除,所以自然想到整除分块。
具体地,对于枚举的
时间复杂度
代码
CI N = 2e5 + 5;
int T, x, y, ans;
signed main() {
T = read();
while(T --) {
x = read(), y = std::min(x, read()), ans = 0;
rep(i, 2, std::min(y, (int)std::sqrt(x))) ans += i - 1;
dep(i, x / (int)std::sqrt(x) - 1, 1) if(x / i ^ x / (i + 1)) {
if(x / (i + 1) >= y) break;
ans += i * (std::min(y, x / i) - x / (i + 1)) - (y >= x / i);
}
printl(ans);
}
return 0;
}