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