Giả sử chúng ta có hai số a và b. Amal và Bimal đang chơi một trò chơi. Trước tiên, mỗi người viết một số nguyên từ 1 đến 6, sau đó ném xúc xắc. Người chơi nào có số viết gần hơn với số trên xúc xắc, người đó thắng vòng đó, nếu cả hai có cùng độ chênh lệch, thì đó là hòa. Nếu Amal viết số a, và Bimal viết b, thì chúng ta phải đếm số cách có thể Amal thắng, số cách hòa và số cách Bimal thắng.
Ví dụ, nếu đầu vào là a = 2; b = 4, thì đầu ra sẽ là [2, 1, 3] nên Amal có thể thắng theo 2 cách. Nếu xúc xắc ra 3, là hòa.
Các bước
Để giải quyết bài toán này, chúng ta sẽ làm theo các bước sau:
s1 := 0 s2 := 0 s3 := 0 if (a + b) mod 2 giống 0, thì: s2 := 1 if a giống b, thì: s2 := 6 ngược lại khi a > b, thì: s1 := 6 - ((a + b) / 2) Ngược lại s1 := (a + b - s2 - 1) / 2 s3 := 6 - s1 - s2 in s1, s2 và s3
Ví dụ
Xem triển khai sau để hiểu rõ hơn:
#include <bits/stdc++.h> using namespace std; void solve(int a, int b) { int s1 = 0, s2 = 0, s3 = 0; if ((a + b) % 2 == 0) s2 = 1; if (a == b) s2 = 6; else if (a > b) s1 = 6 - ((a + b) / 2); else s1 = (a + b - s2 - 1) / 2; s3 = 6 - s1 - s2; cout << s1 << ", " << s2 << ", " << s3 << endl; } int main() { int a = 2; int b = 4; solve(a, b); }Đầu vào
2, 4
Đầu ra
2, 1, 3