수열과 쿼리와 확률 2
시간 제한1초메모리 제한1024 MB
무작위로 고른 M개의 연산이 적용된 뒤 수열의 합 또는 곱이 초기값의 몇 배가 되는지 기댓값을 mod 1e9+7로 구합니다.
문제
동우는 수열과 쿼리 문제를 풀던 중, 왜 수열과 쿼리는 확률적으로 주어지지 않는지 궁금해졌다. 그래서 다음 문제를 만들었다.
길이가 인 수열 에 아래 연산 쿼리를 총 번 적용하려고 한다.
1: 모든 에 를 곱한다. 즉, 에 각각 을 곱한다.2: 에 를 곱한다. ()
동우는 다음 규칙에 따라 개의 쿼리를 각각 독립적으로 정한다.
- 1번 쿼리 1가지와 2번 쿼리 가지, 총 가지 쿼리 중 하나를 같은 확률로 골라 적용한다.
동우는 아래 두 질의 쿼리 중 하나를 실행하려고 한다.
S: 초기 상태의 원소 합을 , 최종 상태의 원소 합을 이라 할 때, 의 값을 구한다.P: 초기 상태의 원소 곱을 , 최종 상태의 원소 곱을 이라 할 때, 의 값을 구한다.
그러나 성격이 급한 동우는 쿼리를 처리하기 전에 질의 쿼리 답의 기댓값을 알고 싶어졌다. 동우를 도와 구해 보자.
입력
첫 번째 줄에 수열의 원소 개수 ()과 연산 쿼리의 개수 ()이 공백으로 구분되어 주어진다.
두 번째 줄에 초기 상태의 양의 정수 ()이 공백으로 구분되어 주어진다.
세 번째 줄에 동우가 묻고자 하는 질의 쿼리 문자 가 주어진다. 는 S, P 중 하나이다.
출력
첫 번째 줄에 질의 쿼리 답의 기댓값을 로 나눈 나머지를 출력한다.
기약 분수 (, , )를 로 나눈 나머지는 의 모듈로 곱셈 역원 , 즉 을 만족하는 정수를 이용해 로 정의한다. 값이 정수이면 이므로 를 의미한다.
주어진 조건 내에서 기댓값은 정수 또는 유리수임을 증명할 수 있다. 유리수인 경우 기약 분수의 분모가 의 배수가 아님이 보장된다.