주사위 게임
시간 제한5초메모리 제한1024 MB
n면 주사위가 주어질 때, 두 번째 던진 값을 첫 값과 XOR할지 고르는 게임에서 두 사람이 최적으로 둘 때의 기댓값을 998244353으로 나눈 나머지로 구합니다.
문제
푸타타와 부다다는 면이 개인 주사위로 게임을 한다. 부터 까지의 정수가 각각 정확히 한 면에 적혀 있고, 각 면이 위를 향할 확률은 모두 같다. 즉, 주사위를 던지면 부터 까지의 정수 중 하나가 균등한 확률로 나온다.
게임은 두 라운드로 진행된다. 첫 번째 라운드에서 푸타타가 주사위를 던져 나온 정수를 라고 한다.
두 번째 라운드에서 부다다는 다음 중 하나를 선택할 수 있다.
- 게임을 끝낸다. 이때 점수는 이다.
- 주사위를 한 번 더 던져 나온 값을 라고 한다. 게임이 끝나고 점수는 이다. 여기서 는 비트 단위 배타적 논리합 연산이다.
푸타타와 부다다는 점수를 최대화하려 하며, 항상 최선의 선택을 한다. 주어진 마다 게임 점수의 기댓값을 구하라.
답은 기약분수 로 나타낼 수 있으며, 이다. 이고 을 만족하는 정수 를 출력하라.
입력
첫 줄에 정수 ()가 주어진다. 이어지는 개의 줄에는 각각 정수 ()이 하나씩 주어진다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 질문의 답을 출력한다.