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.