将君默桥生

博客园 首页 新随笔 联系 订阅 管理
本题有一个结论:
算法
(数论)
结论:
 
如果 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;
}

 

posted on 2020-09-28 23:54  将君默桥生  阅读(180)  评论(0编辑  收藏  举报