【类欧几里得学习小记】

类欧几里得算法因为形式上像欧几里得算法而得名,其时间复杂度也和欧几里得算法一致,类欧几里得算法有很多应用,下面只举部分例子。

目标

求出以下三个函数值
f(a,b,c,n)=ni=0ai+bc
g(a,b,c,n)=ni=0iai+bc
h(a,b,c,n)=ni=0ai+bc2
m=an+bc

f

当a==0时
f(a,b,c,n)=ni=0ai+bc
=bc(n+1)
当(a>=c)||(b>=c)时
f(a,b,c,n)=ni=0ai+bc
=ni=0(aci+bc+(a%c)i+b%cc)
=acn(n+1)/2+bc(n+1)+f(a%c,b%c,c,n)
(a<c)and(b<c)
f(a,b,c,n)=ni=0ai+bc
=ni=0mj=1[ai+bc>=j]
=ni=0m1j=0[ai+bc>=j+1]
=ni=0m1j=0[ai+b>=cj+c]
=ni=0m1j=0[ai+b>cj+c1]
=ni=0m1j=0[i>cj+cb1a]
=m1j=0ni=0[i>cj+cb1a]
=m1j=0(ncj+cb1a)
=nmm1j=0cj+cb1a
=nmf(c,cb1,a,m1)

g

当a==0时
g(a,b,c,n)=ni=0iai+bc
=bcn(n+1)/2
当(a>=c)||(b>=c)时
g(a,b,c,n)=ni=0iai+bc
=ni=0i(aci+bc+(a%c)i+b%cc)
=acn(n+1)(2n+1)/6+bcn(n+1)/2+g(a%c,b%c,c,n)
(a<c)and(b<c)
g(a,b,c,n)=ni=0iai+bc
=m1j=0ni=0i[i>cj+cb1a]
=m1j=0(n+cj+cb1a1)(ncj+cb1a)/2
=12mn(n+1)12f(c,cb1,a,m1)12h(c,cb1,a,m1)

h

当a==0时
h(a,b,c,n)=ni=0ai+bc2
=(bc)2(n+1)
当(a>=c)||(b>=c)时
h(a,b,c,n)=ni=0ai+bc2
x2=2x(x+1)2x
=2xi=1ix
h(a,b,c,n)=ni=0ai+bc2
=2ni=0ai+bcj=1jf(a,b,c,n)
=2mi=1inj=0[aj+bc>=i]f(a,b,c,n)
=2m1i=0(i+1)nj=0[j>ci+cb1a]f(a,b,c,n)
=nm(m+1)2f(c,cb1,a,m1)2g(c,cb1,a,m1)f(a,b,c,n)
至此我们已经可以解决这一类类欧几里得问题。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值