로펭씰~~ 달링씰~~

시간 제한2초메모리 제한1024 MB

요약
카드마다 공정한 동전으로 1 또는 소인수 거듭제곱 곱이 보일 때, 보이는 수들의 최소공배수 기댓값을 998244353으로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

유형
수학, 정수론, 조합론, 확률
정답자
아직 제출이 없습니다

문제

당신은 세계 최고의 포커 대회 World Of Legends - High-stakes Yearly All-in No-limit GamblingWOLHYANG에서 우승을 차지했고, 이제 남은 일은 상금을 수령하는 것뿐이다! 하지만 세계 최고의 포커 대회답게 상금을 수령하는 과정조차 쉽지 않다. 상금은 다음과 같은 방식으로 결정된다.

  • 책상 위에 NN개의 카드가 일렬로 놓여 있다.

  • ii번째 카드의 앞면에는 11, 뒷면에는 pA_i×qB_ip^{A\_i} \times q^{B\_i}가 적혀 있으며, 모든 카드는 처음에 앞면이 보이도록 놓여 있다.

  • 사회자는 동전 던지기를 NN번 진행한다.

    • ii번째로 동전을 던졌을 때 뒷면이 나오면 사회자는 ii번째 카드를 뒷면이 보이도록 뒤집는다.
    • 각 동전 던지기에서 앞면이 나올 확률과 뒷면이 나올 확률은 각각 12\frac{1}{2}로 동일하다.
  • NN번의 동전 던지기가 모두 끝난 후, 보이는 면에 적힌 숫자들의 최소공배수만큼의 원화를 받을 수 있다.

똑똑한 당신은 문득 궁금해졌다. 당신이 받을 원화의 기댓값은 얼마일까?

입력

첫째 줄에 카드의 개수 NN이 주어진다. (1≤N≤200,000)(1 \leq N \leq 200\\,000)

둘째 줄에 pp와 qq가 공백으로 구분되어 주어진다. (2≤p,q≤100,000;(2 \leq p,q \leq 100\\,000; p,qp, q는 서로소))

셋째 줄에 A_1,⋯ ,A_NA\_1,\cdots, A\_N이 공백으로 구분되어 주어진다. (0≤A_i≤200,000)(0\leq A\_i \leq 200\\,000)

넷째 줄에 B_1,⋯ ,B_NB\_1,\cdots, B\_N이 공백으로 구분되어 주어진다. (0≤B_i≤200,000)(0\leq B\_i \leq 200\\,000)

입력으로 주어지는 모든 수는 정수이다.

출력

당신이 받을 원화의 기댓값을 998,244,353998\\,244\\,353으로 나눈 나머지를 출력하여라.

힌트

유리수를 기약분수로 나타냈을 때 yx\frac{y}{x}인 경우, 이 수를 소수인 pp로 나눈 나머지는 xz≡y(modp)xz \equiv y \pmod{p}을 만족하는 00 이상 pp 미만의 정수 zz이며, xx가 pp의 배수가 아닌 경우 이 값은 유일하다.

이 문제에서 당신이 받을 원화의 기댓값은 유리수이며, 분모가 998,244,353998\\,244\\,353의 배수가 아님을 증명할 수 있다. 또한, 998,244,353998\\,244\\,353은 소수이다.

예제1

  1. 예제 1

    입력
    3
    2 5
    0 1 3
    2 1 0
    
    예상 출력
    249561155