만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

연결 요소 개수의 기댓값

시간 제한5초메모리 제한512 MB

요약
각 정점 i가 확률 P_i로 선택될 때, gcd가 1보다 큰 두 선택 정점을 연결한 부분그래프의 연결 요소 개수의 기댓값을 구하고 E × 100^N을 1e9+7로 나눈 나머지를 출력한다.
난이도

어려움10점 중 8점

유형
확률, 수학, 정수론, 유니온 파인드
정답자
아직 제출이 없습니다

문제

1부터 NN까지 서로 다른 정수로 번호가 붙은 노드 NN개가 있다. 이 노드 중 일부를 무작위로 골라 부분집합을 만든다. 노드 ii가 부분집합에 들어갈 확률은 PiP_i이고, 노드마다 독립이다.

부분집합에 속한 두 노드는 번호의 최대공약수가 1보다 클 때 간선으로 이어진다. 이렇게 만들어진 부분 그래프의 연결 요소 개수의 기댓값을 구하라.

입력

첫째 줄에 테스트 케이스 개수 TT가 주어진다 (T≤100T \le 100).

각 테스트 케이스는 두 줄이다. 첫째 줄에 노드 개수 NN이 주어진다 (1≤N≤1001 \le N \le 100). 둘째 줄에 실수 NN개가 공백으로 구분되어 주어진다. ii번째 실수 PiP_i는 노드 ii가 부분집합에 포함될 확률이다 (0≤Pi≤10 \le P_i \le 1, 1≤i≤N1 \le i \le N). 각 실수는 소수점 아래 두 자리까지 주어진다.

출력

각 테스트 케이스마다 연결 요소 개수의 기댓값 EE를 구해서 E×100NE \times 100^N을 10000000071000000007로 나눈 나머지를 한 줄에 출력한다. E×100NE \times 100^N은 항상 정수다.

설명

노드 1은 다른 어떤 노드와도 최대공약수가 1이므로 부분집합에 들어가면 항상 혼자 연결 요소 하나를 이룬다.

N=4N = 4이고 네 확률이 모두 0.50.5인 경우를 보자. 부분집합 16개가 각각 확률 0.06250.0625로 나오고, 이 16가지의 연결 요소 개수를 모두 더하면 28이다. 따라서 기댓값은 28/16=1.7528 / 16 = 1.75이고, 출력할 값은 1.75×1004=1750000001.75 \times 100^4 = 175000000이다.

예제3

  1. 예제 1

    입력
    2
    4
    0.5 0.5 0.5 0.5
    6
    0.5 0.5 0.5 0.5 0.5 0.5
    
    예상 출력
    175000000
    999985132
    
  2. 예제 2

    입력
    3
    1
    1
    1
    0
    1
    0.37
    
    예상 출력
    100
    0
    37
    
  3. 예제 3

    입력
    3
    2
    1.00 1.00
    3
    1 1 1
    5
    1 1 1 1 1
    
    예상 출력
    20000
    3000000
    999999727