그다지 무작위가 아닌 난수 생성기

X를 넣고 K와 비트 AND, OR, XOR 중 하나를 확률에 따라 N번 적용한 뒤 기댓값을 구합니다.

보통5확률비트 연산동적 계획법아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

음이 아닌 정수 하나를 입력으로 받아 음이 아닌 정수 하나를 출력하는 난수 생성기가 있다. 그런데 이 기계는 그다지 무작위하지 않다. 고정된 수 KK를 하나 정해 두고, 항상 다음 세 연산 중 하나만 수행한다.

  • A/100A/100의 확률로 입력과 KK의 비트 AND를 반환한다
  • B/100B/100의 확률로 입력과 KK의 비트 OR을 반환한다
  • C/100C/100의 확률로 입력과 KK의 비트 XOR을 반환한다

어떤 연산을 고를지는 매번 AA, BB, CC에 따라 독립적으로 정해지며, 이 선택만큼은 실제로 무작위하다.

이런 기계 NN대를 직렬로 이어서 한 기계의 출력이 다음 기계의 입력이 되도록 놓았다. 첫 기계에 XX를 넣으면 마지막 기계가 내놓는 값의 기댓값은 얼마인가?

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 줄에 각각 여섯 정수 NN, XX, KK, AA, BB, CC가 공백으로 구분되어 주어진다. 차례대로 기계의 수, 첫 기계에 넣는 값, 모든 기계가 공통으로 쓰는 고정된 수, 그리고 비트 AND, OR, XOR 연산의 확률에 100을 곱한 값이다.

제한

  • 1T501 \le T \le 50
  • 1N101 \le N \le 10
  • 0X1040 \le X \le 10^4
  • 0K1040 \le K \le 10^4
  • 0A1000 \le A \le 100
  • 0B1000 \le B \le 100
  • 0C1000 \le C \le 100
  • A+B+C=100A + B + C = 100

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 마지막 기계가 내놓는 값의 기댓값이다.

yy는 정확한 기댓값을 소수점 아래 열한째 자리에서 반올림해, 소수점 아래 열 자리까지 항상 채워서 출력한다. 값이 정수여도 소수점과 0 열 개를 그대로 적는다.

설명

예제의 첫 테스트 케이스에서는 AND나 OR이 일어나면 최종 출력이 5이고, XOR이 일어나면 0이다. 5가 나올 확률은 0.1+0.50.1 + 0.5, 0이 나올 확률은 0.40.4이므로 기댓값은 5×0.6+0×0.4=35 \times 0.6 + 0 \times 0.4 = 3이다.

예제의 두 번째 테스트 케이스에서는 최종 출력이 확률 0.720.72로 5, 나머지 확률로 0이다.