CF1152C Neko does Maths

给定两个正整数a,b,找到非负整数k使a+k与b+k的最小公倍数最小,如有多解输出最小的k
b ( 1≤a,b≤1e9)
.

主要思路:更相减损法

已知 : a,b (a > b)
求证:最小的 lcm (a + k, b + k) 的最小的 k

因为 lcm (a + k,b + k) = ( a + k ) × \times × (b + k) / gcd( a + k,b + k)
根据更相减损法 得: lcm (a + k,b + k) = (a + k,b + k) / gcd(b + k,a -b);
因为 gcd ( b + k,a - b) 一定为 (a - b) 的因子,
设 w = gcd( b + k, a - b)
故枚举 (a - b) 的因子,
为了保证 k,lcm( a+k,b+k) 最小 , (b + k) 取第一个的大于b的w的倍数
b + k=floor (b / w +1) × \times × w
验证gcd( b + k,w )是否为w
每当发现更小的 lcm(a + k,b +k) 时
更新 k 与 lcm( a +k, b + k)

11
02-01 246
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值