**Example 1 (str 学数学) **str 同学因为名字里含有一个 str,所以觉得字符串对于他来说太简单了,于是他开始了他的数学之旅。
在旅途中str遇到了刚抽到胡桃的 lyl,而 lyl 同学正沉浸在出货的喜悦之中,为了能收获双倍喜悦,他便询问 str,他选的区间内有多少个幸运数字,str觉得这个问题和字符串一样简单,于是把这个问题交给了你。
共有 T 组询问,每次给出两个正整数 L,R,你需要判断有多少 n,L≤n≤R 使得方程
n∑i=1n∑j=1⌊ijn+1⌋=n2(n−1)4
成立。
请输出你得到的答案。
数据范围:1≤T≤10000,1≤L≤R≤107
样例输入:
样例输出:
来源:2023 年寒假集训 B 组总结赛
考场上当然是打表找规律了,但非常愚钝地没看出来……
结论是,n 是一个幸运数字,当且仅当 n+1 是一个质数。下面提供两种证明方法。
Official Solution
出题人提供的非常有技巧性的解法。
n∑i=1n∑j=1⌊ijn+1⌋=n2(n−1)4
考虑为 ⌊ijn+1⌋ 配对,
n∑i=1n∑j=1⌊ijn+1⌋+⌊i(n−j+1)n+1⌋=n2(n−1)2n∑i=1n∑j=1⌊ijn+1⌋+⌊i−ijn+1⌋=n2(n−1)2n∑i=1n∑j=1i−[n+1∤ij]=n2(n−1)2n2(n+1)2−n∑i=1n∑j=1[n+1∤ij]=n2(n−1)2n∑i=1n∑j=1[n+1∤ij]=n2
即要求 n+1∤ij 对任意 1≤i,j≤n 成立。因此根据质数定义,n+1 就是且只能是质数了。
Alternative Solution
考场上推了一半的想法。
n∑i=1n∑j=1⌊ijn+1⌋=n2(n−1)4
注意到 amodb=a−b⌊ab⌋,考虑构造取模
n∑i=1n∑j=1(n+1)⌊ijn+1⌋=n2(n−1)(n+1)4n∑i=1n∑j=1ij−ijmod(n+1)=n2(n−1)(n+1)4(n(n+1)2)2−n∑i=1n∑j=1ijmod(n+1)=n2(n−1)(n+1)4n∑i=1n∑j=1ijmod(n+1)=n2(n+1)2
考虑固定 i,研究 j 变化下左式的情况。方便起见,我们将上式左侧 j 的取值范围扩展至 0 到 n:
n∑i=1n∑j=0ijmod(n+1)=n2(n+1)2
细心的读者或许已经发现,当 gcd(i,n+1)=1 恒成立,即 n+1 为质数时,ijmod(n+1) 将取遍 0 到 n,此时左右两式相等。下面我们证明这是上式相等的充分必要条件。
仍从 ijmod(n+1) 的取值下手,我们研究如下以 j 和 t 为变量的不定方程的解
ij+(n+1)t=m(0≤m<n+1)
由裴蜀定理(Bézout’s identity),方程有解的充分必要条件为 gcd(i,n+1)∣m。不妨记 d=gcd(i,n+1),m=kd,方程变为
ij+(n+1)t=kd(0≤k<n+1d)
写出该不定方程的通解
⎧⎪
⎪⎨⎪
⎪⎩j=j0+s⋅n+1dt=t0−s⋅id(s∈Z)
不难发现,对 0≤k<nd,上述不定方程在 0≤j≤n 的范围内总有 d 个解,这意味着 ijmod(n+1) 将有 d 次取到 kd。故我们有
n∑i=1n∑j=1ijmod(n+1)=n∑i=1dn+1d−1∑k=0kd=n∑i=1d2n+1d−1∑k=0k=12n∑i=1d2(n+1d−1)n+1d=n+12n∑i=1(n+1−d)=n2(n+1)2
化简即得
n∑i=1(n+1−d)=n2n∑i=1d=nn∑i=1gcd(i,n+1)=n
显然上式等价于对任意 1≤i≤n,gcd(i,n+1)=1 恒成立。因此我们证明了 n+1 是质数是原方程成立的充分必要条件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!