Tính năm âm lịch

Gái xinh học lập trình

Bài toán năm âm lịch

Theo quan niệm phương Đông, mỗi năm được gọi theo một tên ghép từ 10 can và 12 chi. Ví dụ năm 2017 là năm Đinh Dậu, hãy tính toán các năm khác có tên âm lịch là gì.

Theo phương pháp tính năm âm lịch của truyền thống Đông Á, mỗi năm sẽ có tên gọi bằng việc ghép 10 can và 12 chi theo thứ tự. Can được đánh số từ 1 đến 10, chi được đánh số từ 1 đến 12. Các cặp can-chi này sẽ lặp lại theo chu kỳ 60 năm.

Thuật toán giải bài toán năm âm lịch

Để tính được các năm âm lịch trong chu kỳ 60 năm, ta có thể sử dụng thuật toán đơn giản như sau:

  1. Xác định năm bắt đầu trong chu kỳ 60 năm (thường là một trong các năm có tên được biết trước).

  2. Sử dụng vòng lặp để tạo ra danh sách các cặp can-chi cho từng năm trong chu kỳ 60 năm. Trong mỗi lần lặp, ta cộng thêm 1 cho năm hiện tại và tính toán can-chi của năm đó bằng cách sử dụng công thức:

    can = (năm + 6) % 10 chi = (năm + 8) % 12

    Trong đó, “%” là toán tử chia lấy phần dư, và các số 6 và 8 được sử dụng để đảm bảo rằng năm bắt đầu sẽ có can và chi đúng.

  3. In ra danh sách các năm âm lịch được tính toán bằng cách ghép cặp can-chi tương ứng.

Cài đặt bài toán năm âm lịch với Python

can = ["Giáp", "Ất", "Bính", "Đinh", "Mậu", "Kỷ", "Canh", "Tân", "Nhâm", "Quý"]
chi = ["Tý", "Sửu", "Dần", "Mão", "Thìn", "Tỵ", "Ngọ", "Mùi", "Thân", "Dậu", "Tuất", "Hợi"]

nam_bat_dau = 2017
nam_ket_thuc = 2076

for nam in range(nam_bat_dau, nam_ket_thuc + 1):
    can_nam = can[(nam + 6) % 10]
    chi_nam = chi[(nam + 8) % 12]
    print(f"{nam}: {can_nam} {chi_nam}")

Cài đặt bài toán năm âm lịch với C++

#include <iostream>
#include <string>
using namespace std;

string can[10] = {"Giáp", "Ất", "Bính", "Đinh", "Mậu", "Kỷ", "Canh", "Tân", "Nhâm", "Quý"};
string chi[12] = {"Tý", "Sửu", "Dần", "Mão", "Thìn", "Tỵ", "Ngọ", "Mùi", "Thân", "Dậu", "Tuất", "Hợi"};

int main() {
    int nam_bat_dau = 2017;
    int nam_ket_thuc = 2076;

    for (int nam = nam_bat_dau; nam <= nam_ket_thuc; nam++) {
        int can_nam = (nam + 6) % 10;
        int chi_nam = (nam + 8) % 12;
        cout << nam << ": " << can[can_nam] << " " << chi[chi_nam] << endl;
    }

    return 0;
}

Cài đặt bài toán năm âm lịch với Pascal

program AmLich;

var
  can: array[0..9] of string = ('Giáp', 'Ất', 'Bính', 'Đinh', 'Mậu', 'Kỷ', 'Canh', 'Tân', 'Nhâm', 'Quý');
  chi: array[0..11] of string = ('Tý', 'Sửu', 'Dần', 'Mão', 'Thìn', 'Tỵ', 'Ngọ', 'Mùi', 'Thân', 'Dậu', 'Tuất', 'Hợi');
  nam_bat_dau, nam_ket_thuc, nam, can_nam, chi_nam: integer;

begin
  nam_bat_dau := 2017;
  nam_ket_thuc := 2076;

  for nam := nam_bat_dau to nam_ket_thuc do
  begin
    can_nam := (nam + 6) mod 10;
    chi_nam := (nam + 8) mod 12;
    writeln(nam, ': ', can[can_nam], ' ', chi[chi_nam]);
  end;
end.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *