CF1855B Longest Divisors Interval 题解

· · 题解

problem

求出一个区间,使其中所有整数都是 n 的因数,最大化区间长度。

solution

由容斥原理和模运算的一些性质,易知,[l,r] 都整除 n[1,r-l+1] 都整除 n 的充分不必要条件。证明略。

因此,贪心地从 1 开始枚举一段连续的整除 n 的数即可。

code

std::cin >> n;
int ans = 0;
while (n % ++ans == 0);
std::cout << ans - 1 << "\n";