Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Xác suất - Thống kê] Monte Carlo tích phân bằng phương pháp hit-or-miss

    Bộ sinh số giả ngẫu nhiên (để kết quả tái lập được, không dùng random thật): Cho số nguyên seed ≥0\ge 0≥0. Đặt s0=seeds_0=\text{seed}s0​=seed. Với i=1,2,3,…i=1,2,3,\dotsi=1,2,3,…: si=(1103515245⋅si−1+12345) mod 231.s_i = (1103515245 \cdot s_{i-1} + 12345) \bmod 2^{31}.si​=(1103515245⋅si−1​+12345)mod231. Số ngẫu nhiên thứ iii là ui=si/231∈[0,1)u_i = s_i / 2^{31} \in [0,1)ui​=si​/231∈[0,1). Dãy u1,u2,u3,…u_1,u_2,u_3,\dotsu1​,u2​,u3​,… được lấy theo ĐÚNG thứ tự này, dùng tuần tự trong suốt quá trình mô phỏng.

    Bài toán: Cho hàm bậc hai f(x)=ax2+bx+cf(x) = ax^2+bx+cf(x)=ax2+bx+c (a,b,ca,b,ca,b,c nguyên) và đoạn [0,L][0, L][0,L] (LLL nguyên dương). Đề bài đảm bảo 0≤f(x)≤H0 \le f(x) \le H0≤f(x)≤H với mọi x∈[0,L]x \in [0,L]x∈[0,L] (HHH nguyên dương cho trước, dùng làm cận trên của "hộp bao" [0,L]×[0,H][0,L]\times[0,H][0,L]×[0,H]).

    Sinh NNN điểm ngẫu nhiên trong hộp bao: với điểm thứ iii (i=1,…,Ni=1,\dots,Ni=1,…,N), lấy hai số ngẫu nhiên kế tiếp u2i−1,u2iu_{2i-1}, u_{2i}u2i−1​,u2i​, đặt xi=u2i−1⋅Lx_i = u_{2i-1}\cdot Lxi​=u2i−1​⋅L, yi=u2i⋅Hy_i = u_{2i}\cdot Hyi​=u2i​⋅H. Đếm số điểm kkk nằm dưới đường cong (thỏa yi≤f(xi)y_i \le f(x_i)yi​≤f(xi​)).

    Ước lượng diện tích (giá trị tích phân ∫0Lf(x) dx\int_0^L f(x)\,dx∫0L​f(x)dx) theo phương pháp hit-or-miss: I^=L⋅H⋅kN\hat I = L\cdot H \cdot \dfrac{k}{N}I^=L⋅H⋅Nk​ (quy ước I^=0\hat I = 0I^=0 nếu N=0N=0N=0). In I^\hat II^ làm tròn 6 chữ số thập phân.

    Ví dụ: a=0,b=0,c=4, L=2, H=4, N=5, seed=1a=0,b=0,c=4,\ L=2,\ H=4,\ N=5,\ \text{seed}=1a=0,b=0,c=4, L=2, H=4, N=5, seed=1 (hàm hằng f(x)=4f(x)=4f(x)=4) → 8.000000.

    • Định dạng đầu vào:

      Một dòng gồm 7 số nguyên a b c L H N seeda\ b\ c\ L\ H\ N\ \text{seed}a b c L H N seed (∣a∣,∣b∣,∣c∣≤1000|a|,|b|,|c|\le 1000∣a∣,∣b∣,∣c∣≤1000; 1≤L≤10001\le L\le 10001≤L≤1000; 1≤H≤1061\le H\le 10^61≤H≤106; 0≤N≤3000000\le N\le 3000000≤N≤300000; 0≤seed<2310\le \text{seed}<2^{31}0≤seed<231; đảm bảo 0≤f(x)≤H0\le f(x)\le H0≤f(x)≤H với mọi x∈[0,L]x\in[0,L]x∈[0,L]).

    • Định dạng đầu ra:

      Một số thực I^\hat II^ với đúng 6 chữ số thập phân.

    Ví dụ:

    Đầu vào:

    1 0 0 1 1 1 7

    Đầu ra:

    1.000000
    

    Đầu vào:

    0 0 1 5 1 0 1

    Đầu ra:

    0.000000
    

    Đang tải editor...