Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xác định người không đủ kẹo cho lượt cho bằng C++

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