题目大意
用两种面值互质的金币支付商品,面值分别是p、q,问在不找零的状况下最贵的商品的价格是多少?html
分析
用一个方程
px+qy=n(gcd(p,q)=1),n最大且取不到正整数解。
先说答案是
n=pq−p−q,可是怎么证实?
用反证法,证实
px+qy̸=pq−p−q,设
px+qy=pq−p−q
首先代入原来的方程获得
px+p+qy+q=pq,也就是
p(x+1)+q(y+1)=pq
由于
gcd(p,q)=1且
p∣q(y+1)因此
p∣y+1,一样的道理由于
gcd(p,q)=1且
q∣p(x+1)因此
q∣x+1
能够设
pi=y+1,
qj=x+1可得
pqj+qpi=pq,因此
j+i=1
由于
x>0,
y>0因此
x+1>1,
y+1>1,即
qj>1,
pi>1,由于p,q均为正整数,因此j和i也是正整数,因此
j+i必然很多于2,与
j+i=1矛盾,因此
px+qy=pq−p−qweb
代码
#include <cstdio>
using namespace std;
long long a,b;
int main(){
freopen("math.in","r",stdin);
freopen("math.out","w",stdout);
scanf("%lld%lld",&a,&b);
return !printf("%lld",a*b-a-b);
}