Description
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。
Input
输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。
Output
输出文件仅一行,一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
Analysis
由于本人蒟蒻不会证明,转载一发大佬证明。神犇勿喷。
用到一个引理:不定方程
先证引理
首先,显然
然后假设有一组特解
所以有一组特解
因为
引理得证
再证原命题
分两步:
1.证
ab−a−b≠ax+by
假设
那么
令
所以
又因为
上面的式子变为
原命题得证
2.证
ab−a−b+t(t≥1)
可以被分解为
ax+by
的形式
构造不定方程
因为
所以,
Code
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
long long a,b;
int main()
{
freopen("math.in","r",stdin);
freopen("math.out","w",stdout);
scanf("%lld%lld",&a,&b);
printf("%lld",a*b-a-b);
return 0;
}