本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
一次不定方程的求解
不定方程
设整数 k≥2,c,a1,...,ak 是整数且 a1,...,ak 是整数且 a1,...,ak 均不等于 0,以及变量 x1,...,xk 是整数变量,方程
a1x1+...+akxk=c
称为 k 元一次不定方程。a1,...,ak 称为它的系数。
k 元一次不定方程有解的充分必要条件
不定方程 a1x1+...+akxk=c 有解的充分必要条件是它的系数的最大公约数 (a1,...,ak)∣c。且该方程的解与不定方程
(a1,...,ak)a1x1+...+(a1,...,ak)akxk=(a1,...,ak)c
的解相同。
二元一次不定方程的通解
设二元一次不定方程
a1x1+a2x2=c
有解,x1,0,x2,0 是它的一组解,t 为任一整数,则上式的通解为:
{x1=x1,0+(a1,a2)a2t,x2=x2,0−(a1,a2)a1t,
带入原方程即可显然验证。
二元一次不定方程的非负解和正解
当二元一次不定方程 a1x1+a2x2=c 有解时,我们进行如下讨论:
显然当 a1,a2 异号时,二元一次不定方程 a1x1+a2x2=c 有无穷多组非负解或正解。
系数为正数的二元一次不定方程的非负解和正解
设 a1,a2,c 均为正整数,(a1,a2)=1,那么当 c>a1a2−a1−a2 时,不定方程 a1x1+a2x2=c 有非负解,解数等于 [c/(a1a2)] 或 [c/(a1a2)]+1。当 c=a1a2−a1−a2 时,不定方程没有非负解。
该定理曾经出现在 NOIP2017 的赛场上。
题目链接
P3951 [NOIP2017 提高组] 小凯的疑惑
题目大意
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。
在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。
现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?
注意:输入数据保证存在小凯无法准确支付的商品。
代码
#include <iostream>
using namespace std;
int main()
{
long long a,b;
cin>>a>>b;
cout<<a*b-a-b;
return 0;
}
明天,我们将介绍该定理的详细证明和直观理解方式。