7.25算法日记

前言

昨日爆零,具体入日记,今日按日程进行。

MATH

题目大意:给定一n,要求找出所有正整数(x,y)满足xy+1|x^2+y^2的个数。(n:1e18,1\leq x\leq y \leq n

解:关键在无穷递降法是否理解,接下来利用韦达定理建立转移关系,遍历打表即可得到答案。

详解:因为是整除,注意是后面的除前面的,因此可以表示为:

x^2+y^2=k(xy+1)\quad (1)

很容易发现:这是一个关于y=x (2)对称的函数,并且下界为0,而为了求出上界,我们可以先假设x<y,固定x,利用韦达定理得到界限,因此:

y_1+y_2 =kx\quad (3) y_1 y_2 = x^2-k\quad (4)

可见,通过3式知:y=kx-y',也就是说如果知道一个解,可以获得另一个对应的解,而又2式知:xy互换后可得到另一个解,他的对应解一定在范围内,那么也就是说:一个x可以唯一对应u个解,m个x即可对应mu个解,也就是从某个值递升。这当然不严谨,想要得到严谨的结论,需要反方向考虑,也就是递降,从y开始运算,递降,我们可以轻易的知道:在0=kx-y_2 \quad (5)这种情况下为最小情况,也即特解。

因此反代入原公式,得到特解点为(x, x^3)也即上界为x^3\leq maxn,这样证明了多个可行点确实是唯一来自这个特定点,并且所有可行点都可以用一个特定点来表示。

接下来对每个点进行还原,计数,最后进行搜索即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值