两个互质整数的线性组合问题

两个互质整数的线性组合问题

本文我们讨论两个互质整数的线性组合问题,以及相关的二元一次不定方程。

两个互质整数的线性组合

已知两个整数 a a a b b b互质,即 gcd ⁡ ( a , b ) = 1 \gcd(a,b)=1 gcd(a,b)=1,那么对于任意两个非负整数 x , y x,y x,y来说,线性组合 a x + b y ax+by ax+by,能表示的整数数是多少,不能表示的整数又是多少,最大是多少,以及不能表示的整数的个数是多少呢?

能表示整数的下界

设能表示的数为 K K K,则有 a x + b y = K ax+by=K ax+by=K,对两边同时取 b b b的模,则 a x m o d    b = K m o d    b ax \mod b=K \mod b axmodb=Kmodb,即为线性同余方程 a x ≡ K m o d    b ax \equiv K \mod b axKmodb。又因为 gcd ⁡ ( a , b ) = 1 \gcd(a,b) = 1 gcd(a,b)=1,因此该线性同余方程一定有解,且有一个解,但是这个解必须满足实际,即 x ≥ 0 , y ≥ 0 x \geq 0,y \geq 0 x0,y0

题目中说凑不出来一个数 K K K,说明 a x + b y = K ax+by=K ax+by=K,中 x ≥ 0 , y < 0 x \geq 0,y \lt 0 x0,y<0 x x x的解空间为 [ 0 , b − 1 ] [0,b-1] [0,b1]因此当 x = b − 1 x=b-1 x=b1时,令 c = a ( b − 1 ) m o d    b c = a(b-1) \mod b c=a(b1)modb,那么 K K K等于序列 c + i b , i ∈ Z c+ib,i \in Z c+ib,iZ,并且 K K K应该小于 a ( b − 1 ) a(b-1) a(b1),这样才能令 y < 0 y \lt 0 y<0,因此我们就解不等式 c + i b < a ( b − 1 ) c+ib \lt a(b-1) c+ib<a(b1),取最大的 i ′ i' i,那么 c + i ′ b c+i'b c+ib就是我们想要的答案了。

不妨设 a < b a \lt b a<b,那么 c = b − a c = b-a c=ba,因此, i ′ = a ( b − 1 ) − c b − 1 i' = \frac{a(b-1) -c}{b} - 1 i=ba(b1)c1。因此 i ′ = a − 2 i' = a-2 i=a2,带入算式 c + i ′ b c+i'b c+ib,结果 b − a + b ( a − 1 ) = a b − a − b b-a+b(a-1)= ab-a-b ba+b(a1)=abab

因此,一个严格的下界(最小能表示)就是 a b − a − b + 1 ab-a-b+1 abab+1

l c m ( a , b ) lcm(a,b) lcm(a,b)是一个最小公倍数下界 a b − a ab-a aba a b − b ab-b abb称为不严格下界

不能表示整数的个数

根据上面的思路,我们设 x = b − n x=b-n x=bn n ∈ [ 1 , b ] n \in[1,b] n[1,b],则 c = a ( b − n ) m o d    b = b − a n + ⌊ a n b ⌋ b c = a(b-n) \mod b=b-an+\lfloor \frac{an}{b} \rfloor b c=a(bn)modb=ban+banb,让不等式 c + i b < a ( b − n ) c+ib \lt a(b-n) c+ib<a(bn)有解, i i i至少为 0 0 0,因此 c < a ( b − n ) c \lt a(b-n) c<a(bn),化简得到 ⌊ a n b ⌋ < a − 1 \lfloor \frac{an}{b} \rfloor \lt a-1 ban<a1,因为 a < b a \lt b a<b,因此 n < b − 1 n \lt b-1 n<b1,因此 n ∈ [ 1 , b − 2 ] n \in [1,b-2] n[1,b2]

接下来,找到最大的 i ′ i' i,解得 i ′ = a − ⌊ a n b ⌋ − 2 i' = a-\lfloor \frac{an}{b} \rfloor - 2 i=aban2

因此,个数为:

∑ n = 1 b − 2 ( a − ⌊ a n b ⌋ − 1 ) = ( a − 1 ) ( b − 2 ) − ∑ n = 1 b − 2 ⌊ a n b ⌋ \sum_{n=1}^{b-2}(a-\lfloor \frac{an}{b} \rfloor - 1)=(a-1)(b-2)-\sum_{n=1}^{b-2}\lfloor \frac{an}{b} \rfloor n=1b2(aban1)=(a1)(b2)n=1b2ban

题解

P3951

int main()
{
    ll a,b;
    cin >> a >> b;
    ll mi = min(a,b);
    ll ma = max(a,b);
    ll upper = ma * (mi-1);
    ll base = (upper)% mi;
    ll ans = 0;
    if((upper - base) % mi == 0)
    {
        ans = (((upper - base) / mi)-1) * mi + base;
    }
    else
    {
        ans = ((upper - base) / mi) * mi + base;
    }

    cout << ans;
    return 0;
}

由此我们可以知道数论题的第一个套路,寻找等式关系,对等式两个取模。构建同余线性方程。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值