题目大意
用两种面值互质的金币支付商品,面值分别是p、q,问在不找零的情况下最贵的商品的价格是多少?
分析
用一个方程px+qy=n(gcd(p,q)=1)px+qy=n(gcd(p,q)=1)px+qy=n(gcd(p,q)=1),n最大且取不到正整数解。
先说答案是n=pq−p−qn=pq-p-qn=pq−p−q,但是怎么证明?
用反证法,证明px+qy≠pq−p−qpx+qy\neq pq-p-qpx+qy̸=pq−p−q,设px+qy=pq−p−qpx+qy=pq-p-qpx+qy=pq−p−q
首先代入原来的方程得到px+p+qy+q=pqpx+p+qy+q=pqpx+p+qy+q=pq,也就是p(x+1)+q(y+1)=pqp(x+1)+q(y+1)=pqp(x+1)+q(y+1)=pq
因为gcd(p,q)=1gcd(p,q)=1gcd(p,q)=1且p∣q(y+1)p|q(y+1)p∣q(y+1)所以p∣y+1p|y+1p∣y+1,同样的道理因为gcd(p,q)=1gcd(p,q)=1gcd(p,q)=1且q∣p(x+1)q|p(x+1)q∣p(x+1)所以q∣x+1q|x+1q∣x+1
可以设pi=y+1pi=y+1pi=y+1,qj=x+1qj=x+1qj=x+1可得pqj+qpi=pqpqj+qpi=pqpqj+qpi=pq,所以j+i=1j+i=1j+i=1
因为x>0x>0x>0,y>0y>0y>0所以x+1>1x+1>1x+1>1,y+1>1y+1>1y+1>1,即qj>1qj>1qj>1,pi>1pi>1pi>1,因为p,q均为正整数,所以j和i也是正整数,所以j+ij+ij+i必然不少于2,与j+i=1j+i=1j+i=1矛盾,所以px+qy=pq−p−qpx+qy=pq-p-qpx+qy=pq−p−q
代码
#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);
}