Cho giá trị nguyên dương n, nhiệm vụ là tạo ra số ngày lẻ cho đến năm n.
Ví dụ
Đầu vào: days = 500 Đầu ra: số ngày lẻ là: 5 Đầu vào: days = 400 Đầu ra: số ngày lẻ là: 0
Cách tính số ngày lẻ trong số năm cho trước
Để tính số ngày lẻ, điều đầu tiên cần kiểm tra là năm đã cho có phải năm nhuận hay không vì nếu là năm nhuận thì số ngày lẻ sẽ thay đổi. Nếu năm chia hết cho 100 hoặc 400 nhưng không chia hết cho 4 thì năm đó sẽ là năm nhuận, ngược lại là năm thường. Năm thường có 1 ngày lẻ, năm nhuận có 2 ngày lẻ.
Phương pháp sử dụng trong chương trình:
- Nhập số ngày làm đầu vào
- Kiểm tra năm là năm nhuận hay năm thường
- Tính ngày lẻ bằng cách lấy modulus của tổng số ngày với 7
- Hiển thị kết quả cuối cùng là số ngày lẻ từ năm 1 đến n
THUẬT TOÁN
BẮT ĐẦU
Bước 1 → Khai báo hàm tính số ngày lẻ trong năm cho trước
int cal_odd(int days)
Khai báo int cal_1 = days / 100
Khai báo int cal_2 = days / 400
Khai báo int check_leap = days >> 2
Khai báo int temp = days - check_leap
NẾU (cal_1)
Gán temp += cal_1
Gán check_leap -= cal_1
KẾT THÚC
NẾU (cal_2)
Gán temp -= cal_2
Gán check_leap += cal_2
KẾT THÚC
Khai báo int final_days = temp + check_leap * 2
Khai báo int odd = final_days % 7
TRẢ VỀ odd
Bước 2 → Trong main()
Khai báo int days = 500
Gọi cal_odd(days)
DỪNG
Ví dụ mã nguồn
#include <iostream>
using namespace std;
// Tính số ngày lẻ trong năm cho trước
int cal_odd(int days) {
int cal_1 = days / 100;
int cal_2 = days / 400;
int check_leap = days >> 2;
int temp = days - check_leap;
if (cal_1) {
temp += cal_1;
check_leap -= cal_1;
}
if (cal_2) {
temp -= cal_2;
check_leap += cal_2;
}
int final_days = temp + check_leap * 2;
int odd = final_days % 7;
return odd;
}
int main() {
int days = 500;
cout << "number of odd days are: " << cal_odd(days);
return 0;
}
Kết quả đầu ra
number of odd days are: 5