BONES spoj – Xúc xắc bò

Nguồn đề bài: http://vn.spoj.com/problems/BONES/

1. Đề bài BONES spoj

Bessie rất yêu thích chơi những trò chơi đổ xúc xắc và cô bò này đã nài được bác nông dân John chở tới cửa hàng đồ chơi và cô bò đã mua 3 cái xúc xắc về để lăn.

Những viên xúc xắc này tương ứng có S1, S2 và S3 mặt đều nhau, các mặt được đánh số từ 1->S1, 1->S2 và 1->S3 (2 <= S1 <= 20; 2 <= S2 <= 20; 2 <= S3 <= 40).

Bessie cứ thả xúc xắc liên tục và mỗi lần lại ghi nhận lại 1 số nguyên là tổng giá trị của 3 mặt xúc xắc thả được. Mục đích của cô bò là để tìm ra xem tổng giá trị nào xuất hiện nhiều nhất.

Cho số mặt của 3 xúc xắc, hãy xác định xem tổng giá trị nào xuất hiện nhiều nhất. Nếu có nhiều hơn 1 giá trị xuất hiện nhiều nhất thì ghi ra giá trị nhỏ nhất.

DỮ LIỆU

  • Dòng 1: 3 số nguyên cách nhau bởi dấu cách: S1, S2 và S3

KẾT QUẢ

  • Dòng 1: Số nguyên nhỏ nhất là tổng giá trị xuất hiện nhiều lần nhất, giả sử rằng xác suất các mặt xúc xắc xuất hiện là như nhau.

VÍ DỤ

Dữ liệu
3 2 3

Kết quả
5

GIẢI THÍCH

Đây là tất cả các trường hợp có thể xảy ra. 1 1 1 -> 3 1 2 1 -> 4 2 1 1 -> 4 2 2 1 -> 5 3 1 1 -> 5 3 2 1 -> 6 1 1 2 -> 4 1 2 2 -> 5 2 1 2 -> 5 2 2 2 -> 6 3 1 2 -> 6 3 2 2 -> 7 1 1 3 -> 5 1 2 3 -> 6 2 1 3 -> 6 2 2 3 -> 7 3 1 3 -> 7 3 2 3 -> 8 Trong đó 5 và 6 xuất hiện nhiều nhất (mỗi số 5 lần), vậy 5 là kết quả.

2. Code tham khảo BONES spoj

Bài này khá đơn giản với ý tưởng ĐPT O(S1*S2*S3):

const   fi='';
var     f:text;
        s1,s2,s3:byte;
        A:array[0..100] of longint;
procedure xuli;
var     m,n,p:byte;
        lon,k,i,tam:word;
begin
        fillchar(a,sizeof(a),0);
        for m:=1 to s1 do
                for n:=1 to s2 do
                        for p:=1 to s3 do
                                inc(a[m+n+p]);
        lon:=0;
        for i:=1 to 100 do
                begin
                        if (a[i]>lon) then
                                begin
                                        lon:=a[i];
                                        k:=i;
                                end;
                end;
        writeln(k);
end;

begin
        assign(f,fi); reset(f); readln(f,s1,s2,s3); close(f);
        xuli;
end.

2 thoughts on “BONES spoj – Xúc xắc bò

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *