만드는 중입니다

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

로봇

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

요약
로봇이 확률적으로 왼쪽, 직진, 오른쪽을 선택하며 N번 이동한 뒤 원점에서 떨어진 거리의 제곱의 기댓값을 구해 1e9+7로 나눈 분수 값을 출력한다.
난이도

보통10점 중 6점

유형
확률, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

xy평면의 원점에 로봇이 서 있다. 로봇은 x축 양의 방향을 바라보고 있고, 지금부터 NN번 움직인다. 한 번 움직이는 과정은 다음과 같다.

  1. 로봇은 LL+M+R\frac{L}{L+M+R}의 확률로 바라보는 방향에서 왼쪽으로 90도 돌고, ML+M+R\frac{M}{L+M+R}의 확률로 방향을 그대로 두며, RL+M+R\frac{R}{L+M+R}의 확률로 오른쪽으로 90도 돈다. 처음 상태에서 왼쪽으로 90도 돌면 y축 양의 방향을 바라보고, 오른쪽으로 90도 돌면 y축 음의 방향을 바라본다.
  2. 방향이 정해지면 로봇은 그 방향으로 거리 1만큼 이동한다.

로봇이 NN번 움직인 결과 좌표 (x,y)(x, y)에 있으면, 원점에서 떨어져 있는 정도는 x2+y2x^2 + y^2이다. 로봇이 NN번 움직인 다음 원점에서 떨어져 있는 정도의 기댓값을 구하는 프로그램을 작성하라.

입력

첫째 줄에 네 정수 NN, LL, MM, RR이 공백으로 구분되어 주어진다. NN은 로봇이 움직이는 횟수이고, LL, MM, RR은 각각 왼쪽으로 돌 확률, 방향을 그대로 둘 확률, 오른쪽으로 돌 확률을 결정한다. LL, MM, RR 중 적어도 하나는 양의 정수이다. (1≤N≤1091 \le N \le 10^9, 0≤L,M,R≤1060 \le L, M, R \le 10^6)

출력

로봇이 NN번 이동한 다음 원점에서 떨어져 있는 정도의 기댓값을 출력한다. 정확하게 채점하기 위해, 답을 기약분수로 나타내어 a/ba/b가 되면 a×b−1a \times b^{-1}을 1,000,000,007로 나눈 나머지를 대신 출력한다. b−1b^{-1}은 1,000,000,007을 법으로 하는 bb의 곱셈 역원이다. 이 문제에서 주어지는 모든 입력에 대해 답이 존재한다.

예제4

  1. 예제 1

    입력
    5 1 0 1
    
    예상 출력
    5
    
  2. 예제 2

    입력
    10 5 0 7
    
    예상 출력
    308301433
    
  3. 예제 3

    입력
    15 249 123 953
    
    예상 출력
    644460144
    
  4. 예제 4

    입력
    100 4 5 6
    
    예상 출력
    648224530