만드는 중입니다

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

BipBop 커플

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

요약
N개의 동작이 주어질 때, 두 사람이 무작위 위치에서 춤을 시작해 동작이 달라지거나 노래가 끝날 때까지 맞춘 구간 길이의 기댓값을 기약분수로 구합니다.
난이도

보통10점 중 7점

유형
문자열, 문자열 매칭, 정렬, 스택
정답자
아직 제출이 없습니다

문제

밥과 찰리는 새로 유행하는 커플 놀이인 BipBop 트렌드를 즐기려 한다. 짧은 영상에 특화된 이 소셜 네트워크는 그 어느 때보다 빠르게 퍼지고 있다. 그 결과 커플들은 서로를 얼마나 사랑하는지를 함께 춤을 얼마나 잘 맞추는지로 가늠한다. 이론상 BipBop 춤은 단순해서 거의 모든 노래에 쓸 수 있다. 노래는 보통 구절마다 하나씩, 정수로 표현되는 동작의 나열로 이루어진다. 동작들은 꽤 범용적이다.

두 사람은 노래가 이미 재생 중인 파티에 늦게 도착한다. 노래가 지금 어느 구절인지 모르지만, 그래도 BipBop을 출 수 있음을 보여주고 싶어 한다. 각자 임의의 구절에서 춤을 시작해, 둘 중 한 명이 노래의 끝에 도달하거나 서로 다른 동작을 하게 될 때까지 안무를 따라간다.

구절마다 동작이 하나씩 주어진 노래가 있을 때, 두 사람이 각자 시작 구절을 균등한 확률로 고른다고 하자. 두 사람이 동시에 춤을 추는 구절 수의 기댓값을 구하라.

입력

첫 줄에 노래의 구절 수 NN (1≤N≤1051 \le N \le 10^5)이 주어진다. 둘째 줄에는 각 구절의 동작 V1,V2,…,VNV_1, V_2, \dots, V_N (1≤Vi≤N1 \le V_i \le N)이 NN개의 정수로 주어진다.

출력

두 사람이 동시에 춤을 추는 구절 수의 기댓값을 기약분수 P/QP/Q (gcd⁡(P,Q)=1\gcd(P, Q) = 1) 꼴로 출력한다. 이 값은 항상 이런 꼴로 쓸 수 있음이 증명되어 있다.

예제3

  1. 예제 1

    입력
    2
    1 1
    
    예상 출력
    5/4
    
  2. 예제 2

    입력
    4
    1 1 1 1
    
    예상 출력
    15/8
    
  3. 예제 3

    입력
    7
    1 2 1 3 1 2 1
    
    예상 출력
    48/49