AcWing 200. Hankson的趣味题(另一种思路)

文章目录

题意

给你四个数 a 0 , a 1 , b 0 , b 1 , 0 ≤ a 0 , a 1 , b 0 , b 1 ≤ 1 0 9 a_0, a_1, b_0, b_1, 0 \le a_0, a_1,b_0,b_1 \le 10^9 a0,a1,b0,b1,0a0,a1,b0,b1109,请你找出有多少个x使得 g c d ( x , a 0 ) = a 1 , l c m ( x , b 0 ) = b 1 gcd(x, a_0) = a_1, lcm(x, b_0) = b_1 gcd(x,a0)=a1,lcm(x,b0)=b1

思路

这儿有自己的一个不成熟的想法但是没有实现希望有大佬能指正。
根据算数基本定理我们得知:
x = A 1 a 1 × A 2 a 2 × . . . × A n a n ( A i ∈ p r i m e s ) . l c m ( a , b ) = A 1 m a x ( a 1 , b 1 ) × A 2 m a x ( a 2 , b 2 ) × . . . × A n m a x ( a n , b n ) . g c d ( a , b ) = A 1 m i n ( a 1 , b 1 ) × A 2 m i n ( a 2 , b 2 ) × . . . × A n m i n ( a n , b n ) ( A i ∈ a , A i ∈ b ) x = A_1^{a_1} \times A_2^{a_2} \times ... \times A_n^{a_n} (A_i \in primes) \\ . \\ lcm(a, b) = A_1^{max(a_1, b_1)} \times A_2^{max(a_2, b_2)} \times ... \times A_n^{max(a_n, b_n)} \\ . \\ gcd(a, b) = A_1^{min(a_1, b_1)} \times A_2^{min(a_2, b_2)} \times ... \times A_n^{min(a_n, b_n)} (A_i \in a, A_i \in b) x=A1a1×A2a2×...×Anan(Aiprimes).lcm(a,b)=A1max(a1,b1)×A2max(a2,b2)×...×Anmax(an,bn).gcd(a,b)=A1min(a1,b1)×A2min(a2,b2)×...×Anmin(an,bn)(Aia,Aib)
因为 l c m ( x , b 0 ) = b 1 lcm(x, b_0) = b_1 lcm(x,b0)=b1 由此可知 b 1 b_1 b1所拥有的质因子, x x x都有可能拥有,如果 b 0 b_0 b0所拥有的质因子的个数和 b 1 b_1 b1的相同(个数用cntr表示),代表的是我 x x x可以有该因子(0~cntr)个。如果不相同代表的是x必须有这么多个质因子。但是我们不能只考虑最小公倍数的个数,我们还有一个限制条件就是gcd。如果 x x x可以拥有质因子a( b 0 b_0 b0的b的个数和 b 1 b_1 b1的b的个数相同时),必须拥有质因子b(当 b 0 b_0 b0没有这个质因子b时)。

当x可以拥有a时且 a 0 a_0 a0也有这个质因子时,如果 a 1 a_1 a1没有这个质因子那么我们此时可以不用计算这个质因子的,如果 a 1 a_1 a1有这个质因子那么我们的x最多只能取 a 1 a_1 a1这么多个。

当x必须拥有b这个因子时且个数(cntx表示个数)确定了。如果 a 0 a_0 a0也有这个因子,但是 a 1 a_1 a1没有那么就将产生矛盾所以无解。如果 a 1 a_1 a1对于该质因子个数是小于cntx的同样产生矛盾所以无解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值