Mô tả bài toán
Amal có a kẹo, Bimal có b kẹo. Lượt 1: Amal cho 1, Bimal cho 2; lượt 2: Amal cho 3, Bimal cho 4;... Ai không đủ kẹo cho lượt mình thì thua. Không tính kẹo nhận được từ đối phương.
Ví dụ
a=7, b=6: Amal cho 1 (còn 6), Bimal cho 2 (còn 4), Amal cho 3 (còn 3), Bimal cho 4 (còn 0), lượt sau Amal cần cho 5 nhưng chỉ còn 3 → Amal thua.
Thuật toán
Amal cho các số lẻ: 1+3+5+... = x^2 (x lượt). Bimal cho các số chẵn: 2+4+6+... = x(x+1) (x lượt). Tìm x lớn nhất sao cho x^2 ≤ a. Nếu x(x+1) > b thì Bimal thua trước, ngược lại Amal thua.
Code C++
#include <bits/stdc++.h>
using namespace std;
string solve(int a, int b) {
int x = sqrt(a);
if (x * (x + 1) > b)
return "Bimal";
else
return "Amal";
}
int main() {
int a = 7, b = 6;
cout << solve(a, b) << endl;
return 0;
}
Đầu vào / Đầu ra
Input: 7, 6
Output: Amal