• NOIp D1T1 小凯的疑惑


    吐槽

    果然让人很疑惑,这道题,对于我这种数学渣渣来说太不友好了,哪里想得到结论,猜也猜不到。

    思路一

    纯数学,见过的飞快切掉,没见过的就...


    结论就是:已知$a,b$为大于$ 1 $的互质的正整数,则使不定方程$ax+by=c$ 不存在非负整数解的最大整数
    好像是叫什么赛瓦维斯特定理,但是除了这道题的题解之外,我没有在其它任何地方搜到,跟数学相关的痕迹一点都没有,太神奇了,难道这是一个只有$OIer$才研究的公式
    证明一下吧。
    首先,先证$ax+by=ab−a−b(a,b>1,(a,b)=1)$不存在非负整数解。
    用反证法,假设存在$x>=0,y>=0$,使得 $ax+by=ab−a−b(a,b>1,(a,b)=1)$成立。

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

    $a*(x+1)=b*(a-y-1)$
    又因为$(a,b)=1$
    则 $bmid (x+1)$

    同理可证:$a|(y+1)$
    又因为$x>=0,y>=0$

    所以$x>=b,y>=a$
    则$a*(x+1)+b*(y+1)>=ab+ba>=2ab$

    因为$a>1,b>1$

    所以$ab>1$

    所以$2ab>a$


    与之前假设的$a*(x+1)+b*(y+1)=a*b$矛盾,所以假设不成立。


    接下来,需要证明$ax+by=c$ $(a,b>1,(a,b)=1)$中,对于所有的$c>ab-a-b$,方程都存在非负整数解

    设$c=ka+m-a-b(k>=b,a<=m<=a-1)$,即$ax+by=ka+m-a-b(k>=b,1<=m<=a-1)$

    因为$(a,b)=1$,根据裴蜀定理,可知存在$x_0,y_0∈Z$,使$ax_0+by_0=1$

    所以存在$x_0,y_0∈Z$,使$ax_0+by_0=m$

    $y_0=(m-ax_0)/b$,对于$m%b$的不同,有$b-1$种$x_0$的取值,使得$y_0$是整数

    我们令$-(b-1)<=x_0<=-1$,以此来先保证$y_0>=0$

    由于$-ax_0>1,m>=1$,所以事实上$y_0>=1$

    于是取$y=y_0-1$,则$y>=0$

    则$x_0=(m-by_0)/a$,

    $x=(ka+m-a-b-by)/a=k-1+(m-b-by)/a=k-1+(m-b-b(y0-1))/a=k-1+(m-by_0)/a=k-1+x_0$

    又因为$-(b-1)<=x_0<=-1$,则$-(b-1)+k-1<=x<=-1+k-1$,$-b+k<=x<=k-2$

    又因为$k>=b$,则$-b+k>=0$,则$x>=0$

    得证。

    思路二

    暴力打表找规律,不过在没有OEIS的情况下我一般都找不出来的...

    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

    这就要看运气了

    Update:看到一份很精妙的题解 来源及作者见图片

    代码

    说实话,这道题不贴代码都可以qwq

     1 #include<iostream>
     2 #include<string>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<queue>
     6 #include<algorithm>
     7 #include<vector>
     8 using namespace std;
     9 #define N 255
    10 #define ll long long 
    11 #define INF 0x3f3f3f3f
    12 ll a,b;
    13 int main()
    14 {
    15     scanf("%lld %lld",&a,&b);
    16     printf("%lld
    ",a*b-a-b);
    17     return 0;
    18 }
  • 相关阅读:
    vaddin使用技巧
    数据库连接&数据库进程&数据库操作
    gcc编译器参数使用及解决
    smtp服务器搭建(实现本地通讯)
    jdk+tomcat+mysql搭建网站无法打开
    ie8此加载项无法恢复&网站还原错误问题解决=lr成功打开ie成功录制脚
    loadrunner打不开ie&ie默认浏览器设置方法
    判断iis是否已经安装
    loadrunner常见问题
    代码中字符串比较长时可以分行写
  • 原文地址:https://www.cnblogs.com/lyttt/p/11780556.html
Copyright © 2020-2023  润新知