数学小记:1988IMOP6
改编版 OI 题:给定 n,对满足 (xy+1)∣(x2+y2),x,y∈[1,n] 的 (x,y) 计数,n≤1018。
对其分析,首先注意到 xy,x2,y2 都是二次项,令 x≤y 则可以推出 x2≤xy≤y2,则 xy+1x2+y2≈xy。
这是初步的估计,接下来我们分析一下:
- (xy+1)(xy−1)=y2−xy+xy−1<y2+x2。
- (xy+1)(xy+1)=y2+xy+xy+1>y2+x2。
所以答案要么是 ⌊xy⌋ 要么是 ⌈xy⌉。
令 y=qx+r,若 q 是 xy+1x2+y2 则 r∈(−x,x),我们先讨论 r=0 的特殊情况。
x(qx)+1x2+(qx)2=qx2+q2x2=q2x2+qx2=q,y=x3
代入验证发现 y=x3 确实是一组特解。
讨论 r>0。
x(qx+r)+1x2+(qx+r)2=qx2+q2x2+2qxr+r2=q2x2+qxr+qx2+r2+qxr=q
显然 qxr≥q,x2+r2+qxr>q,该情况不成立。
讨论 r<0,另设 y=qx−r,r∈(0,x)。
x(qx−r)+1x2+(qx−r)2=qx2+q2x2−2qxr+r2=q2x2−qxr+qx2+r2=qxr+q
看起来我们一筹莫展了,但是观察形式:x2+r2=qxr+q=q(xr+1),我们由 (x,y) 递归到了 (x−ymodx,x)。
而递归终止条件是我们推过的特解,y=x3。
注意这个递归的形式十分苛刻,不仅要保证两参数的形式,还要保证 ⌈xy⌉ 是固定的值 q,它等于递归终点的 x2。
因此我们会计数了,枚举递归终点,反向生成即可,log 层之内结束。