牛客网暑期ACM多校训练营(第五场)B. div(技巧+OEIS or Pell方程)

本文探讨了一个数学问题,即如何找到大于等于给定数值m的最小的“好”数n,这里“好”数指存在一个特定范围内的x使得x整除n的四次方。通过对不同情况的分类讨论及Pell方程的应用,文章给出了两种不同的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意

  一个数被称为好的,当且仅当存在一个x[n2+1,n2+2n]x∈[n2+1,n2+2∗n]使得x|n4x|n4,给定一个m(1m101000)m(1≤m≤101000),找到一个大于等于mm的最小的好的n

分析(1)

  (P.S. 这一部分为正解,大致思路即敦老师的pdf题解[其实就是抄了一遍…加深一下对Pell方程印象])
  设n2+a|n4n2+a|n4,则n2+a|n4(n2a)(n2+a)=a2n2+a|n4−(n2−a)(n2+a)=a2,又a24n2<4(n2+a)a2≤4n2<4(n2+a),所以a2=t(n2+a)a2=t(n2+a)t=1,2,3t=1,2,3,接下来就对tt进行分类讨论。
  (1)当t=1时,a2=n2+aa2=n2+aa(a1)=n2a(a−1)=n2无解。
  (2)当t=2t=2时,(a1)2=2n2+1(a−1)2=2n2+1,方程x22y2=1x2−2y2=1的初始解(x,y)=(3,2)(x,y)=(3,2),于是通过Pell方程推出通解是n0=0,n1=2,nk+2=6nk+1nkn0=0,n1=2,nk+2=6nk+1−nk
  (3)当t=3t=3时,a2=3n2+3aa2=3n2+3a,设a=3ba=3b,则3b2=n2+3b3b2=n2+3b,设n=3mn=3m,则b2=3m2+3bb2=3m2+3b(2b1)2=12m2+1(2b−1)2=12m2+1,得x212y2=1x2−12y2=1,初始解为(x,y)=(7,2)(x,y)=(7,2),于是原方程初始解为n0=0,n1=2,nk+2=14nk+1nkn0=0,n1=2,nk+2=14nk+1−nk
  因为只有这几种情况,而且t=1t=1是无解的,所以只存在两个递推式,由于这两个递推式的增长速度很快,所以只要对两个递推式分别暴力枚举到第一个大于等于mm的数字,取min就行了。

Code

# 偷懒用python[雾]
n, a, b, c, d = int(input()), 0, 2, 0, 6
while b < n:
    b, a = b * 6 - a, b
while d < n:
    d, c = d * 14 - c, d
print(min(b, d))

Pell方程

定义

  对于形如x2Dy2=1x2−Dy2=1(D是一个固定正整数但不是完全平方数)的方程,我们将它称作Pell方程。

定理

  Pell方程总有正整数解,若(x1,y1)(x1,y1)是使x1x1最小的解,则每个解都可以通过取幂得到:
  xk+ykD=(x1+y1D)kxk+yk∗D=(x1+y1∗D)k
  xn+1=x0xn+Dy0ynxn+1=x0xn+Dy0ynyn+1=y0xn+x0ynyn+1=y0xn+x0yn
  xn+2=2x0xn+1xnxn+2=2x0xn+1−xnyn+2=2x0yn+1ynyn+2=2x0yn+1−yn
  通过这个定理,我们可以将上面分析中的那个Pell方程求出递推关系式,这样就可以解决这个问题了。

分析(2)

  据说还有打完表通过一些技巧推完后通过OEIS得出递推式的,这样也能得出正确答案(然而我并不知道怎么做),请聪明的读者自行思考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值