题意
给你四个数 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,0≤a0,a1,b0,b1≤109,请你找出有多少个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(Ai∈primes).lcm(a,b)=A1max(a1,b1)×A2max(a2,b2)×...×Anmax(an,bn).gcd(a,b)=A1min(a1,b1)×A2min(a2,b2)×...×Anmin(an,bn)(Ai∈a,Ai∈b)
因为
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的同样产生矛盾所以无解。