Codeforces Round #701 (Div. 2) C

C. Floor and Mod

 

给定x,y,求满足条件 
⌊ a / b ⌋ = a mod b

这样的整数对在(a  <= x)(b <= y)上的数量。

 

分析条件式子:⌊ a / b ⌋ = a mod b, 不妨令k == a mod b == ⌊ a / b ⌋ ,可以得出:a == k * (b + 1),并且 k < b && k * k <= a。

我们发现,对任意一个k,只要a <= x && b <= y && k < b即可成立,将第一个条件转移到b上,即 k * (b + 1) <= x 即 b <= x / k - 1 。

换句话说,b的上限是 min(y, x / k - 1),b的下限是k + 1,对于这其中任意一个整数b,均存在对应的a使得等式成立。所以跑一遍枚举即可。

Codeforces Round #701 (Div. 2) C

 

上一篇:701. 二叉搜索树中的插入操作(中等)


下一篇:LeetCode:701. 二叉搜索树中的插入操作