#数论#洛谷 3951 JZOJ 5473 小凯的疑惑

题目大意

用两种面值互质的金币支付商品,面值分别是p、q,问在不找零的情况下最贵的商品的价格是多少?


分析

用一个方程 p x + q y = n ( g c d ( p q ) = 1 ) ,n最大且取不到正整数解。
先说答案是 n = p q p q ,但是怎么证明?
用反证法,证明 p x + q y p q p q ,设 p x + q y = p q p q
首先代入原来的方程得到 p x + p + q y + q = p q ,也就是 p ( x + 1 ) + q ( y + 1 ) = p q
因为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-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);
}

猜你喜欢

转载自blog.csdn.net/sugar_free_mint/article/details/80977289