赞,通过b确实能减少计算量
一点表达错误 3n+1 = (a+b)^2
另外b不用算到20,因为a^2 < 2*2022 + 1, a <= 63, 由a=2b+sqrt(6b^2+1),b<15
【 在 zhenniub 的大作中提到: 】
: 第一题我的算法是假设2n+1=a^2,3n+1=b^2,然后做变换可以得到a=2b+sqrt(6b^2+1),因为ab都是整数,所以6b^2+1肯定是完全平方数,假设等于m^2,则b^2=(m+1)(m-1)/6,所以(m+1)或(m-1)必然能被6整除,然后就去找6的倍数前后的数一个个试看看是不是完全平方数,比如(4 6)这个组合就可以,则b=2,a=9,n=40,下面(6 8) (12 10) (12 14)...这样找下去都不行。然后到了(48 50)才找到另一组数,b=20,a=89,n=3960,但n超过了2022,所以答案是1。当然,实际上不用算到(48,50),算到中间就知道找不到另一个了。
--
FROM 175.8.71.*