星星之火OIer:2019.4.11考试总结(一)——小凯的疑惑

本文探讨了塞瓦维斯特定理在竞赛编程中的应用,详细解析了该定理的证明过程,并通过一个具体的编程实例展示了如何利用该定理解决数学问题。文章深入浅出地解释了定理背后的数学原理,为读者提供了理解与应用塞瓦维斯特定理的清晰路径。

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

这是2019.4.11考试中的第一题

同样是NOIP2017提高组day1的第一题

还是先给一下题::

https://www.luogu.org/problemnew/show/P3951

这是LGOJ上的题

这道题据说是用的塞瓦维斯特定理,但百度上都搜不到就有点神奇了

代码其实很简单::

#include<cstdio>
int a,b;
int main() {
    read(a),read(b);
    pr(a*b-a-b);
}

这里的read和pr就看这里

首先,如果你实在不知道塞瓦维斯特定理,你可以递推::

a=2,b=3,ans=1

a=2,b=5,ans=3

a=2,b=7,ans=5

a=3,b=5,ans=7

a=3,b=7,ans=11

a=5,b=7,ans=23

a=5,b=11,ans=39

\cdots\cdots\cdots\cdots

当然

塞瓦维斯特定理是这个样子的::

a,b>1,(a,b)=1

则使不定方程a*x+b*y=C的无负整数的最大整数解的C=a*b-a-b

好绕

证明如下::

若有x,y>=0a*x+b*y=a*b-a-b,则

移项,得a*(x+1)+b*(y+1)=a*b

a*(x+1)=b*(a-y-1)

因为(a,b)=1

所以b|(x+1)

同理可证a|(y+1)

所以(x+1)>=b,(y+1)>=a

所以a*(x+1)+b*(y+1)>=a*b+b*a>=2*a*b

因为之前假设的a*(x+1)+b*(y+1)=a*b

至此通过反证法证出没有x,y>=0使得a*x+b*y=ab-a-b


以上只是万里长征的第一步

现在我们要来证有一个数C>=a*b-a-b+1

C+a+b>=a*b+1

因为有裴蜀定理

所以必定有x_0,y_0使得a*x_0+b*y_0=1

C+a+b=k*a+m(k>=b,1<=m<=a)

则一定存在x_1,y_11-b<=x_1<=-1

使得a*x_1+b*y_1=m

那么y_1>0

那么我们取x=k+x_1-1,y=y_1-1

所以a*x+b*y=C

所以对于任意一个C>=a*b-a-b+1

都存在x>=0,y>=0使a*x+b*y=C

证明完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值