Reverse Card (Hard Version)

前面都是比较经典的套路

d = g c d ( a , b ) d=gcd(a,b) d=gcd(a,b),则 a = d k 1 , b = d k 2 a=dk_1,b=dk_2 a=dk1,b=dk2 g c d ( k 1 , k 2 ) = 1 gcd(k_1,k_2)=1 gcd(k1,k2)=1,于是题目条件转化为 d k 1 + d k 2 ∣ d 2 k 2 dk_1+dk_2|d^2k_2 dk1+dk2d2k2,即 k 1 + k 2 ∣ d k 2 k_1+k_2|dk_2 k1+k2dk2,设 k 3 ( k 1 + k 2 ) = d k 2 k_3(k_1+k_2)=dk_2 k3(k1+k2)=dk2,则 ( d − k 3 ) k 2 = k 3 k 1 (d-k_3)k_2=k_3k_1 (dk3)k2=k3k1,由于 k 1 , k 2 k_1,k_2 k1,k2互质,所以有 k 3 = k 2 k 4 k_3=k_2k_4 k3=k2k4,即 d = k 4 ( k 1 + k 2 ) d=k_4(k_1+k_2) d=k4(k1+k2)

剩下的看这篇题解

比较新的思想就是我们没办法处理 k 1 , k 2 k_1,k_2 k1,k2的互质,所以只能枚举,枚举的话尽量缩小范围,就像题解一样缩小范围就好了

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值