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

Tìm chênh lệch nhỏ nhất giữa hai buổi biểu diễn bằng C++

Mô tả bài toán

Ca sĩ có a bài 1 phút, b bài 2 phút, c bài 3 phút. Phân chia vào 2 buổi để chênh lệch thời lượng tối thiểu.

Ví dụ

a=2,b=1,c=3 → Tổng = 2+2+9=13. Buổi 1: 1+1+2+3=7, Buổi 2: 3+3=6 → chênh 1.

Thuật toán

Tổng thời gian = a + 2b + 3c. Chênh lệch tối thiểu = (a + c%2) % 2? Thực ra công thức đơn giản: return (a + c) & 1 (xem code). Giải thích: mỗi bài 3 phút có thể chia thành 1+2, bài 2 phút không đổi, bài 1 phút dùng để cân bằng. Chênh lệch = (a + c%2) % 2? Code trả về (a + c&1).

Code C++

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

int solve(int a, int b, int c) {
    return (a + c) & 1;
}

int main() {
    int a=2,b=1,c=3;
    cout << solve(a,b,c) << endl;
    return 0;
}

Đầu vào / Đầu ra

Input: 2, 1, 3

Output: 1