题目描述
古代中国使用天干地支来记录当前的年份。
天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。
地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。
将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。
20202020 年是庚子年。
每过一年,天干和地支都会移动到下一个。例如 20212021 年是辛丑年。
每过 6060 年,天干会循环 66 轮,地支会循环 55 轮,所以天干地支纪年每 6060 年轮回一次。例如 19001900 年,19601960 年,20202020 年都是庚子年。
给定一个公元纪年的年份,请输出这一年的天干地支年份。
输入描述
输入一行包含一个正整数,表示公元年份。
其中有 ,输入的公元年份为不超过 99999999 的正整数。
输出描述
输入一行包含一个正整数,表示公元年份。
输入输出样例
示例
输入
2020
输出
gengzi
题解
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int year;
cin >> year;
string tiangan[10] ={"geng", "xin", "ren", "gui", "jia", "yi", "bing", "ding", "wu", "ji"};
string dizhi[12] = {"shen", "you", "xu", "hai", "zi", "chou", "yin", "mou", "chen", "si", "wu", "wei"};
//根据题意60为一个周期,对1900年进行取余得到40,也就是说公元49年也是庚子年,60周期为一个循环的时候天干会循环6轮,地支循环5轮也就是说天干每12次会轮回一次,地支每10次会轮回一次。对40进行10取余可以知道在公元0年的时候天干为庚,同理对40进行12取余还剩余4,向前移动4位也就是shen所以。我们得出公元0年的时候是gengshen年,在前面我们也知道了天干以10为一个周期,地支以12位一个周期,我们对年份进行取余就能知道是是什么年了
cout << tiangan[year % 10] << dizhi[year % 12] << endl;
return 0;
}