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

题目大意

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


分析

用一个方程 p x + q y = n ( g c d ( p , q ) = 1 ) px+qy=n(gcd(p,q)=1) px+qy=n(gcd(pq)=1),n最大且取不到正整数解。
先说答案是 n = p q − p − q n=pq-p-q n=pqpq,但是怎么证明?
用反证法,证明 p x + q y ≠ p q − p − q px+qy\neq pq-p-q px+qy̸=pqpq,设 p x + q y = p q − p − q px+qy=pq-p-q px+qy=pqpq
首先代入原来的方程得到 p x + p + q y + q = p q px+p+qy+q=pq px+p+qy+q=pq,也就是 p ( x + 1 ) + q ( y + 1 ) = p q p(x+1)+q(y+1)=pq p(x+1)+q(y+1)=pq
因为 g c d ( p , q ) = 1 gcd(p,q)=1 gcd(p,q)=1 p ∣ q ( y + 1 ) p|q(y+1) pq(y+1)所以 p ∣ y + 1 p|y+1 py+1,同样的道理因为 g c d ( p , q ) = 1 gcd(p,q)=1 gcd(p,q)=1 q ∣ p ( x + 1 ) q|p(x+1) qp(x+1)所以 q ∣ x + 1 q|x+1 qx+1
可以设 p i = y + 1 pi=y+1 pi=y+1 q j = x + 1 qj=x+1 qj=x+1可得 p q j + q p i = p q pqj+qpi=pq pqj+qpi=pq,所以 j + i = 1 j+i=1 j+i=1
因为 x > 0 x>0 x>0 y > 0 y>0 y>0所以 x + 1 > 1 x+1>1 x+1>1 y + 1 > 1 y+1>1 y+1>1,即 q j > 1 qj>1 qj>1, p i > 1 pi>1 pi>1,因为p,q均为正整数,所以j和i也是正整数,所以 j + i j+i j+i必然不少于2,与 j + i = 1 j+i=1 j+i=1矛盾,所以 p x + q y = p q − p − q px+qy=pq-p-q px+qy=pqpq


代码

#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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值