만드는 중입니다

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

수열과 쿼리와 확률 2

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

요약
무작위로 고른 M개의 연산이 적용된 뒤 수열의 합 또는 곱이 초기값의 몇 배가 되는지 기댓값을 mod 1e9+7로 구합니다.
난이도

어려움10점 중 8점

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

문제

동우는 수열과 쿼리 문제를 풀던 중, 왜 수열과 쿼리는 확률적으로 주어지지 않는지 궁금해졌다. 그래서 다음 문제를 만들었다.

길이가 NN인 수열 A=A1,A2,⋯ ,ANA=A_1,A_2,\cdots ,A_N에 아래 연산 쿼리를 총 MM번 적용하려고 한다.

  • 1: 모든 AiA_i에 N+1−iN+1-i를 곱한다. 즉, A1,A2,⋯ ,ANA_1,A_2,\cdots ,A_N에 각각 N,N−1,⋯ ,1N,N-1,\cdots ,1을 곱한다.
  • 2 ii: AiA_i에 ii를 곱한다. (1≤i≤N1\le i\le N)

동우는 다음 규칙에 따라 MM개의 쿼리를 각각 독립적으로 정한다.

  • 1번 쿼리 1가지와 2번 쿼리 NN가지, 총 N+1N+1가지 쿼리 중 하나를 같은 확률로 골라 적용한다.

동우는 아래 두 질의 쿼리 중 하나를 실행하려고 한다.

  • S: 초기 상태의 원소 합을 S0S_0, 최종 상태의 원소 합을 S1S_1이라 할 때, S1S0\frac{S_1}{S_0}의 값을 구한다.
  • P: 초기 상태의 원소 곱을 P0P_0, 최종 상태의 원소 곱을 P1P_1이라 할 때, P1P0\frac{P_1}{P_0}의 값을 구한다.

그러나 성격이 급한 동우는 쿼리를 처리하기 전에 질의 쿼리 답의 기댓값을 알고 싶어졌다. 동우를 도와 구해 보자.

입력

첫 번째 줄에 수열의 원소 개수 NN(1≤N≤1061\le N\le 10^6)과 연산 쿼리의 개수 MM(1≤M≤10181\le M\le 10^{18})이 공백으로 구분되어 주어진다.

두 번째 줄에 초기 상태의 양의 정수 A1,A2,⋯ ,ANA_1,A_2,\cdots ,A_N(1≤Ai≤1091\le A_i\le 10^9)이 공백으로 구분되어 주어진다.

세 번째 줄에 동우가 묻고자 하는 질의 쿼리 문자 QQ가 주어진다. QQ는 S, P 중 하나이다.

출력

첫 번째 줄에 질의 쿼리 답의 기댓값을 109+710^9+7로 나눈 나머지를 출력한다.

기약 분수 pq\frac{p}{q}(p≥0p\ge 0, q>0q>0, gcd⁡(p,q)=1\gcd(p,q)=1)를 109+710^9+7로 나눈 나머지는 qq의 모듈로 곱셈 역원 q−1q^{-1}, 즉 q⋅q−1≡1(mod109+7)q\cdot q^{-1}\equiv 1\pmod{10^9+7}을 만족하는 정수를 이용해 p⋅q−1(mod109+7)p\cdot q^{-1}\pmod{10^9+7}로 정의한다. 값이 정수이면 q=q−1=1q=q^{-1}=1이므로 p(mod109+7)p\pmod{10^9+7}를 의미한다.

주어진 조건 내에서 기댓값은 정수 또는 유리수임을 증명할 수 있다. 유리수인 경우 기약 분수의 분모가 109+710^9+7의 배수가 아님이 보장된다.

예제4

  1. 예제 1

    입력
    3 1
    3 2 1
    S
    
    예상 출력
    500000005
    
  2. 예제 2

    입력
    3 1
    3 2 1
    P
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3 111111111666666666
    3 2 1
    S
    
    예상 출력
    1
    
  4. 예제 4

    입력
    3 999999999999999964
    3 2 1
    P
    
    예상 출력
    1