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

Số nhóm size 3 tối đa từ 2 loại vật phẩm A, B trong C++

Cho N vật loại A, M vật loại B. Tạo nhiều nhóm nhất có thể, mỗi nhóm gồm đúng 3 vật, có ít nhất 1 vật mỗi loại (tức là không được toàn A hoặc toàn B).

Ví dụ

N = 3, M = 5 → Output: 2
(Nhóm: 1A+2B, 1A+2B. Dùng 2A, 4B)

N = 5, M = 9 → Output: 4

Phân tích trường hợp

Mỗi nhóm dùng 3 vật, trong đó có (1A,2B) hoặc (2A,1B).

  • Nếu M ≥ 2N: A là hạn chế → tối đa N nhóm (mỗi nhóm 1A+2B).
  • Nếu N ≥ 2M: B là hạn chế → tối đa M nhóm (mỗi nhóm 2A+1B).
  • Ngược lại: có thể cân bằng → tối đa ⌊(N+M)/3⌋ nhóm.

Công thức gọn: min(N, M, (N+M)/3) (chia nguyên).

Chương trình C++

#include <bits/stdc++.h>
using namespace std;

int maxGroups(int N, int M) {
    return min({N, M, (N + M) / 3});
}

int main() {
    int N = 5, M = 9;
    cout << maxGroups(N, M); // Output: 4
    return 0;
}

Kết quả

4

Giải thích công thức

Tổng vật = N+M. Mỗi nhóm 3 vật → tối đa (N+M)/3 nhóm. Ngoài ra, mỗi nhóm cần ≥1 A và ≥1 B → số nhóm ≤ N và ≤ M. Vậy đáp án = min(N, M, (N+M)/3).