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

C++: Số cột lịch tháng cho trước ngày đầu tuần

Bài toán: Tháng m (1-12), ngày 1 là thứ d (1=CN..7=Thứ 7). Năm không nhuận. Tính số cột (tuần) cần cho lịch.

Công thức: Tổng ô = days[m] + (d-1) (ô trống đầu + ngày tháng). Số cột = ceil(tong / 7) = (tong + 6) / 7. Code gốc dùng (a[m] + d + 5) / 7 tương đương.

Code C++

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

int solve(int m, int d) {
    int days[13] = {0, 31,28,31,30,31,30,31,31,30,31,30,31};
    int total = days[m] + (d - 1);
    return (total + 6) / 7; // ceil division
}

int main() {
    cout << solve(11, 6) << endl; // 5
    return 0;
}

Kết quả

5

Tháng 11 (30 ngày), bắt đầu thứ 7 (d=6? cần kiểm tra mapping). Kết quả 5 cột.