首页 > 其他分享 >欧几里得

欧几里得

时间:2023-10-29 15:22:19浏览次数:35  
标签:lfloor nonumber frac 欧几里得 rfloor rm sum

\(\rm L\): 我们现在要解 \(ax \equiv 1\pmod p\) 的同余方程

\(\rm P\): 用欧拉定理来求逆元是熟知的

\(\rm L\): 现在进行另一种处理,\(x\) 是 \(ax+py-1=0\) 这个不定方程的整数解

\(\rm P\): 根据裴蜀定理,可以推广为求 \(ax+by=(a,b)\) 的整数解

\(\rm L\): 考虑将其变形为 \(ax+(b+ak-ak)y=(a,b)\)

\(\rm P\): 整理一下就是 \((ak+b)y+a(x-ky)=(a,b)\)

\(\rm L\): 你知道辗转相除法的过程吗

\(\rm P\): 嗯,利用 \((a,b) = (b,a\bmod b)\) 递归求解

\(\rm L\): 上面的式子是类似的

\(\rm P\): 是的,要求关于 \(a,b\) 的解,只要求 \(b,a\bmod b\) 的解

\(\rm L\): 所以这个过程被称做扩展欧几里得,试着分析其复杂度

\(\rm P\): 就是辗转相除法的复杂度,但是不会证明

\(\rm L\): 考虑 \(Fib(n) \bmod Fib(n-1) = Fib(n-2)\)

\(\rm P\): 嗯,\(a \bmod b \leq a-b\),而 \(Fib(n) \bmod Fib(n-1) = Fib(n)-Fib(n-1)\),\(T(Fib(n)) = O(n)\),所以 \(T(n) = O(\log n)\)

\(\rm L\): 很好的复杂度和常数,要当年补模拟赛那道模 \(998244353\) 用 exgcd 而不是费马小定理就不会 95pts 了/kk

\(\rm P\): 哪道啊

\(\rm L\): 那题现在交不了了/kk,尝试着用刚刚的方法求 \(\sum^n_{i=0}\lfloor\frac{ai+b}{c}\rfloor\)

\(\rm P\): 我推导一下:

\(\begin{align}\sum^n_{i=0}\lfloor\frac{ai+b}{c}\rfloor &= \sum^n_{i=0}\sum^{\lfloor\frac{ai+b}{c}\rfloor-1}_{j=0}1 \nonumber\\ &=\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}\sum^n_{i=0}1[j<\lfloor\frac{ai+b}{c}\rfloor] \nonumber\\ &=\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}\sum^n_{i=0}1[i>\lfloor\frac{cj+c-b-1}{a}\rfloor] \nonumber\\ &= n\lfloor\frac{an+b}{c}\rfloor-\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{i=0} (\lfloor\frac{c\bmod i+c-b-1}{a}\rfloor+\lfloor\frac{c}{a}\rfloor i) \nonumber\\ &= (n-\frac{\lfloor\frac{an+b}{c}\rfloor-1}{2}\lfloor\frac{c}{a}\rfloor)\lfloor\frac{an+b}{c}\rfloor-\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{i=0} (\lfloor\frac{c\bmod i+c-b-1}{a}\rfloor)\nonumber\end{align}\)

\(\rm L\): 很好,用 \(f(n,a,b,c)\) 表示 \(\sum^n_{i=0}\lfloor\frac{ai+b}{c}\rfloor\),可以得到 \(\begin{align}f(n,a,b,c) = (n-\frac{\lfloor\frac{an+b}{c}\rfloor-1}{2}\lfloor\frac{c}{a}\rfloor)\lfloor\frac{an+b}{c}\rfloor-f(\lfloor\frac{an+b}{c}\rfloor-1,c\bmod a,c-b-1,a)\nonumber\end{align}\)
,接下来试着求 \(\begin{align}g(n,a,b,c) &= \sum^n_{i=0}(\lfloor\frac{ai+b}{c}\rfloor)^2 \nonumber\\ h(n,a,b,c) &= \sum^n_{i=0}i\lfloor\frac{ai+b}{c}\rfloor\nonumber\end{align}\)

\(\rm P\): 看上去长得差不多啊,

\(\begin{align} g(n,a,b,c) &= \sum^n_{i=0}(\lfloor\frac{ai+b}{c}\rfloor)^2 \nonumber \\ &= \sum^n_{i=0}\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{k=0}1 \nonumber \\ &= \sum^n_{i=0}\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{k=0} 1[j,k < \lfloor\frac{ai+b}{c}\rfloor] \nonumber \\ &= 2\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}\sum^j_{k=0}(n-\lfloor\frac{cj+c-b-1}{a}\rfloor)-\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}(n-\lfloor\frac{cj+c-b-1}{a}\rfloor)\nonumber \\ &= n\lfloor\frac{an+b}{c}\rfloor^2 -f(\lfloor\frac{an+b}{c}\rfloor-1,c,c-b-1,a)-2h(\lfloor\frac{an+b}{c}\rfloor,c,c-b-1,a)\nonumber\end{align}\)

\(\begin{align}h(n,a,b,c) &= \sum^n_{i=0}i\lfloor\frac{ai+b}{c}\rfloor \nonumber \\ &=\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}\sum^n_{i=0}i[i>\lfloor\frac{cj+c-b-1}{a}\rfloor] \nonumber \\ &=\sum^{\lfloor\frac{an+b}{c}\rfloor-1}_{j=0}(\frac{n(n+1)}{2}-\frac{\lfloor\frac{cj+c-b-1}{a}\rfloor(\lfloor\frac{cj+c-b-1}{a}\rfloor-1)}{2}) \nonumber \\ &= \frac{1}{2}(n(n+1))\lfloor\frac{an+b}{c}\rfloor-g(\lfloor\frac{an+b}{c}\rfloor-1,c,c-b-1,a)-f(\lfloor\frac{an+b}{c}\rfloor-1,c,c-b-1,a)\nonumber \end{align}\)

就是 \(g\) 和 \(h\) 互相推,不过好难写啊/yun

【模板】二元一次不定方程 (exgcd)
【模板】类欧几里得算法

标签:lfloor,nonumber,frac,欧几里得,rfloor,rm,sum
From: https://www.cnblogs.com/Lcyanstars/p/17795909.html

相关文章

  • 类欧几里得算法
    快速求解\[f(a,b,c,n)=\sum_{i=0}^n\left\lfloor\frac{ai+b}{c}\right\rfloor\]若\(\max(a,b)\gec\)\[设s_0(n)=n+1,s_1(n)=\frac{n(n+1)}{2},s_2(n)=\frac{n(n+1)(2n+1)}{6}\sum_{i=0}^n\left\lfloor\frac{ai+b}{c}\right\rfloor=\sum_{i=0}......
  • 扩展欧几里得算法
    算法阅读此篇前可先阅读欧几里得算法。给定\(a,b,s\),求\(ax+by=s\)的任意一组解。证明:由裴蜀定理得:二元一次方程\(ax+by=c\)的有解条件是\(\gcd(a,b)\midc\)。由欧几里得算法得知\(\gcd(a,b)=\gcd(b,a\modb)\)假设我们求出了\(\gcd(b,a\modb)\)的两个解\((x'......
  • 拓展欧几里得算法揭秘
    最大公约数更相减损术:\(\gcd(x,y)=\gcd(y-x,x)(x\leqy)\)。设\(\gcd(x,y)=k,\gcd(p,q)=1,x=kp,y=kq\)。那么\(\gcd(y-x,x)=\gcd(kq-kp,kp)=k\times\gcd(q-p,p)\)。设\(\gcd(q-p,p)=r,q-p=rb,p=ra\)。那么\(q=r(a+b)\)。因为\(\gcd(p,q)=1=\gcd(ra,r(a+b))\)。所以......
  • 数论——欧几里得算法和扩展欧几里得算法 学习笔记
    数论——欧几里得算法和扩展欧几里得算法引入最大公约数最大公约数即为GreatestCommonDivisor,常缩写为gcd。一组整数的公约数,是指同时是这组数中每一个数的约数的数。\(\pm1\)是任意一组整数的公约数;一组整数的最大公约数,是指所有公约数里面最大的一个。最小公倍数最......
  • 扩展欧几里得算法
    扩展欧几里得算法问题引入求\(ax+by=\gcd(a,b)\)的一组整数解。前置知识欧几里得算法当\(a,b\)为非负整数时,以下等式一定成立。\[\gcd(a,b)=\gcd(b,a\bmodb)\]裴蜀定理对于任意非负整数\(a,b\),一定存在满足的整数对\((x,y)\),使得以下等式成立。\[ax+b......
  • 关于欧几里得算法与裴蜀定理的证明
    前言:因为某次考试订正T4,用到了exCRT,然后发现我和lws不会exgcd……所以来把gcd到exgcd重新学一下,就写了这篇trick。欧几里得算法:求证:\[\gcd(a,b)=\begin{cases}\gcd(b,a\bmodb)&b\ne0\\a&b=0\\\end{cases}\]记:\(a=qb+r\),其中\(q=\lfloor\fracab\r......
  • 数论-同余与扩展欧几里得详解(附例题及代码)
    数论-同余与扩展欧几里得详解(附例题及代码)注意:这篇文章的信息量会有一点多,请耐心看完一.同余1.1同余的定义给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(modm)简单来说,对于x,y,若x%p=y%p,即x,y对于p的余数......
  • 扩展欧几里得算法
    裴蜀定理对于任意正整数\(a,b\),记\(g=(a,b)\),一定存在整数\(x,y\),使得\(ax+by=g\),且能凑出的数一定是\(g\)的倍数。首先由于\(a,b\)都是\(g\)的倍数,所以能凑出的数必定是\(g\)的倍数。关键在于怎么证明一定存在整数\(x,y\),使得\(ax+by=g\)。下面我们就抛出这个......
  • 欧几里得算法(辗转相除法)-- 实现分数计算
    博客地址:https://www.cnblogs.com/zylyehuo/#-*-coding:utf-8-*-"""利用欧几里得算法实现一个分数类,支持分数的四则运算(加法)"""classFraction:def__init__(self,a,b):self.a=aself.b=bx=self.gcd(a,b)se......
  • 欧几里得算法(辗转相除法)-- 计算两个数的最大公约数
    博客地址:https://www.cnblogs.com/zylyehuo/#-*-coding:utf-8-*-#递归defgcd(a,b):ifb==0:returnaelse:returngcd(b,a%b)print(gcd(12,16))#非递归defgcd2(a,b):whileb>0:r=a%ba=b......