Trò chơi Nim ngẫu nhiên

Đề bài

Mô tả

Xét trò chơi Nim với n đống đồ vật. Hai người chơi luân phiên đi; mỗi lượt người chơi phải lấy ít nhất một vật và có thể lấy tùy ý số vật từ một đống. Người không còn nước đi (khi tất cả các đống đều rỗng) là người thua.

Kích thước của mỗi đống được chọn ngẫu nhiên và độc lập trong đoạn [0,x] theo cùng một phân phối xác suất cho trước: xác suất một đống có đúng i vật là P(i).

Người chơi đi đầu tiên luôn chơi tối ưu. Hãy tính xác suất để người chơi đi trước thắng.

Nhắc lại kết quả cổ điển của trò chơi Nim: người đi trước thắng khi và chỉ khi tổng XOR (hoặc theo bit) kích thước tất cả các đống khác 0.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nx: số đống và kích thước tối đa của một đống.
  • Dòng thứ hai chứa x+1 số thực P(0),P(1),,P(x), mỗi số có tối đa 6 chữ số sau dấu chấm. Bảo đảm tổng tất cả P(i) bằng 1.

Dữ liệu ra

In ra một số thực là xác suất người chơi đi trước thắng. Đáp án được chấp nhận nếu sai lệch so với đáp án đúng không quá 106.

Ràng buộc

  • 1n109
  • 1x100
  • 0P(i)1i=0xP(i)=1

Ví dụ

Input Output Giải thích
2 2
0.500000 0.250000 0.250000
0.62500000 2 đống, mỗi đống nhận giá trị 0,1,2 với xác suất 0.5,0.25,0.25. Người đi trước thua khi XOR hai đống bằng 0, tức hai đống bằng nhau: xác suất 0.52+0.252+0.252=0.375. Vậy xác suất thắng là 10.375=0.625.
9 9
0.100000 0.100000 0.100000 0.100000 0.100000 0.100000 0.100000 0.100000 0.100000 0.100000
0.93687014 9 đống, mỗi đống phân phối đều trên {0,,9}.
1000000 5
0.000000 0.000000 1.000000 0.000000 0.000000 0.000000
0.00000000 Mọi đống chắc chắn có 2 vật. Với 1000000 (chẵn) đống, tổng XOR luôn bằng 0 nên người đi trước luôn thua.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0