trang chủ / đề bài / helpking

Giúp nhà vua

Đề bài

Mô tả

Nhà vua cần chọn ra đúng một người trong số n hiệp sĩ, sao cho mỗi hiệp sĩ được chọn với xác suất bằng nhau, tức là đúng 1/n. Công cụ duy nhất ông có là một đồng xu cân đối: mỗi lần tung, đồng xu ra mặt sấp hoặc mặt ngửa với xác suất 1/2, độc lập với những lần tung khác.

Nhà vua được phép dùng chiến lược tùy ý: sau mỗi lần tung, dựa trên toàn bộ dãy kết quả đã nhận được, ông quyết định dừng lại và công bố người thắng, hoặc tung thêm một lần nữa. Chiến lược được coi là hợp lệ nếu nó kết thúc với xác suất 1 và mỗi hiệp sĩ thắng với xác suất đúng bằng 1/n.

Trong tất cả các chiến lược hợp lệ, nhà vua chọn chiến lược có kỳ vọng số lần tung nhỏ nhất. Hãy tính giá trị kỳ vọng đó.

Dữ liệu vào

Một dòng duy nhất chứa số nguyên n.

Dữ liệu ra

In ra kỳ vọng số lần tung nhỏ nhất dưới dạng phân số tối giản a/b (không có dấu cách, không có chữ số 0 vô nghĩa ở đầu). Nếu giá trị là số nguyên a thì in ra dạng a/1; riêng với n=1 nhà vua không cần tung lần nào nên đáp án là 0/1.

Ràng buộc

  • 1≤n≤10000
  • Đáp án có thể rất lớn: tử số và mẫu số có thể lên tới khoảng 3000 chữ số thập phân.

Ví dụ

Input Output Giải thích
2 1/1 Một lần tung là đủ: sấp chọn hiệp sĩ thứ nhất, ngửa chọn hiệp sĩ thứ hai.
3 8/3 Tung 2 lần: ba trong bốn dãy kết quả ứng với ba hiệp sĩ, dãy còn lại thì bỏ đi và làm lại từ đầu. Mỗi vòng thành công với xác suất 3/4 nên kỳ vọng là 2·43=83. Đây cũng là chiến lược tối ưu.
4 2/1 Hai lần tung cho đúng bốn dãy kết quả đồng khả năng, gán mỗi dãy cho một hiệp sĩ.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0