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

Chia số thành hai phần trong C++

Giới thiệu

Chia một số nguyên n thành hai phần a và b sao cho a + b = n. Cách đơn giản nhất: a = n/2 (chia nguyên), b = n - a.

Ví dụ

n = 13 → a = 6, b = 7 (6 + 7 = 13)

n = 10 → a = 5, b = 5 (5 + 5 = 10)

Mã nguồn hoàn chỉnh

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

void divideTheNumber(int n) {
    int a = n / 2;      // Chia nguyên (làm tròn xuống)
    int b = n - a;      // Phần bù để a + b = n
    cout << a << " " << b << endl;
}

int main() {
    int n = 13;
    divideTheNumber(n);
    return 0;
}

Kết quả chạy chương trình

6 7

Phân tích

na = n/2b = n-aa+bChênh lệch |a-b|
1055100
1156111
1266120
1367131
1477140

Đặc điểm: Hai phần chênh lệch nhau tối đa 1 đơn vị.

Phân tích độ phức tạp

  • Thời gian: O(1)
  • Không gian: O(1)

Mở rộng: Chia thành k phần

void divideIntoKParts(int n, int k) {
    int base = n / k;
    int remainder = n % k;
    
    for (int i = 0; i < k; i++) {
        int part = base + (i < remainder ? 1 : 0);
        cout << part << " ";
    }
    cout << endl;
}
// Ví dụ: divideIntoKParts(13, 3) → 5 4 4 (tổng = 13)

Kết luận

Phép chia số nguyên đơn giản nhưng là nền tảng cho nhiều thuật toán phân chia (load balancing, chia dữ liệu, phân trang, v.v.).