AND, OR, XOR 중 하나를 확률에 따라 K와 적용하는 기계 N개를 직렬로 연결했을 때 마지막 출력의 기댓값을 구합니다.
보통5비트 연산확률수학아직 제출이 없습니다시간 제한10초메모리 제한512 MB어떤 "난수 생성기"(RNG)는 음이 아닌 정수 하나를 입력으로 받아 음이 아닌 정수 하나를 출력한다. 그런데 이 기계는 사실 그리 무작위하지 않다. 고정된 수 K가 정해져 있고, 매번 다음 세 연산 중 정확히 하나를 수행한다.
기계는 A, B, C에 따라 연산을 고르고, 그 선택은 완전히 무작위이며 매번 독립이다.
이런 기계가 N개 있다. 한 기계의 출력이 다음 기계의 입력이 되도록 일렬로 연결했다. 첫 번째 기계에 X를 넣었을 때 마지막 기계가 내놓는 값의 기댓값을 구하라.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 이어지는 T개의 줄에 각각 여섯 정수 N, X, K, A, B, C가 공백으로 구분되어 주어진다. 차례대로 기계의 개수, 처음 입력값, 모든 기계가 비트 연산에 쓰는 고정된 수, 그리고 AND, OR, XOR를 고를 확률에 100을 곱한 값이다.
각 테스트 케이스마다 한 줄에 Case #x: y 형식으로 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 마지막 기계가 내놓는 값의 기댓값을 소수점 아래 넷째 자리까지 반올림한 값이다. 뒤따르는 0까지 포함해 소수점 아래를 항상 정확히 네 자리로 출력한다.
모든 테스트 케이스에서 정답은 반올림 경계로부터 충분히 떨어져 있다. 배정밀도 실수 연산으로 계산해도 출력이 달라지지 않는다.
예제의 첫 번째 테스트 케이스에서는 AND나 OR가 일어나면 최종 출력이 5이고 XOR가 일어나면 0이다. 5가 나올 확률은 0.1+0.5=0.6, 0이 나올 확률은 0.4이므로 기댓값은 5×0.6+0×0.4=3이다.
두 번째 테스트 케이스에서는 최종 출력이 확률 0.72로 5이고, 나머지 확률로 0이다.