本题有一个结论:
算法
(数论)
结论:
如果 a,b 均是正整数且互质,那么由 ax+by,x≥0,y≥0不能凑出的最大数是 ab−a−b
下面给出证明:
首先证明 ab−a−b不能被 ax+bx,x≥0,y≥0a表示出。
反正法,假设 ab−a−b=ax+by那么 ab=a(x+1)+b(y+1)由于 a|ab,a|a(x+1)所以 a|b(y+1),由于 a,b 互质,所以 a|(y+1),由于 y≥0,所以 a<=y+1,所以 b(y+1)≥ab。同理可得 a(x+1)≥ab,所以 a(x+1)+b(y+1)≥2ab>ab,矛盾。
证明 ab−a−b+d,d>0 一定可以表示成 ax+by,x,y≥0的形式
#include<bits/stdc++.h>
using namespace std;
int n,m;
//求最大公约数
int gcd(int a,int b){
if(b==0) return a;
else return gcd(b,a%b);
}
int main(){
cin >> n >> m;
int lcm = n /gcd(n,m) * m;//最小公倍数
cout << lcm - n - m;
return 0;
}
浙公网安备 33010602011771号