竞赛
考级
我们知道,对于一个正整数 mmm,从 mmm 开始,每次增加 mmm,所得的结果一定能被 mmm 整除。因此可以得出,对于区间 [1,r−l+1][1,r-l+1][1,r−l+1] 中的任意一个数,区间 [l,r][l,r][l,r] 中一定能找到一个数是它的整数倍。所以在题目中,我们可以假定 l=1l=1l=1 ,这样一定能得到最大的满足条件的区间。所以将 rrr 的值从 111 开始循环即可。每次的时间复杂度接近 O(1)\mathrm{O} (1)O(1)。 代码如下:
dream_陆军展览
由于本题长度默认从1开始(区间长),所以l=1。 本题找到r即可(O(T*N)就够用了)
复仇者_sxwwsด้้(加团队
显然当 l=1l=1l=1 时有最长的区间。这里我给出证明。 设 NNN 最小的不能整除的正整数为 MMM 。 ∵\because∵ 当 NNN 能整除一个数时,它一定能整除这个数的所有的因子, 又 ∵\because∵ 每相邻 MMM 个数内必定有一个数是 MMM 的倍数(对 MMM 取余可知), ∴\therefore∴ 最长的区间长度一定不超过 M−1M-1M−1 。 那么,我们能不能构造一个长度为 M−1M-1M−1 的区间呢? 显然 [1,M)[1,M)[1,M) 就是一个合法的区间。 故答案为 M−1M-1M−1。 时间复杂度:O(TlogN)O(T\log N)O(TlogN)。
复仇者_帅童
可以发现,从 1 开始的连续数字的长度是最长的,因此可以容易的得出此代码:
MuktorFM
T6 本题是个诈骗题,其实最长因子区间一定从 111开始。因为对于任意的数[l,r][l, r][l,r],都能在区间[1,r−l+1][1, r - l + 1][1,r−l+1]中找到 111 个因子。所以只要求起点是 111 的区间即可。
桌子乱的反义词
T6: 我们可以在题目中固定 l=1,这样可以保证得到满足条件的最长区间。 也就是说,只需要从 1 开始遍历可能的 r 值即可。 C++代码: PYTHON代码:
yang(Python)
C.K.K.S.H