资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
【问题描述】
古代中国使用天干地支来记录当前的年份。
天干一共有十个,分别为:甲(ji)、 乙(yi)、 丙(bing)、丁(ding)、 戊(wu)、己(ji)、 庚(geng)、辛(xin)、 壬(ren)、 癸(gui)。
地支一共有十二个,分别为:子(zi)、 丑(chou)、寅(yin)、 卯(mao)、辰(chen)、巳(si)、 午(wu)、未(wei)、 申(shen)、 酉(you)、 戌(xu)、亥(hai)。 .
将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。
2020年是庚子年。
每过一年,天干和地支都会移动到下一个。 例如2021年是辛丑年。
每过60年,天干会循环6轮,地支会循环5轮,所以天干地支纪年每60
年轮回一次。例如1900年,1960 年,2020年都是庚子年。
给定一个公元纪年的年份,请输出这一年的天 干地支年份。
【输入格式】
输入一行包含一个正整数,表示公元年份。
【输出格式】
输出一个拼音,表示天干地支的年份,天干和地支都用小写拼音表示(不表示声调),之间不要加入任何多余的字符。
【样例输入】
2020
【样例输出】
gengzi
【评测用例规模与约定】
对于所有测评用例,1≤K≤100000,1≤|S|≤100000。其中 |S| 表示 S 长度。
如果不清楚天干纪年法,题目给出了样例和推演规则。
a. 2020年是庚子年。
b. 往后一年,天干和地支都往后移动一格。
因此,可以以2020年为基准,往前和往后推导。
year = int(input())
TianGan = ['jia','yi','bing','ding','wu','ji','geng','xin','ren','gui']
DiZhi = ['zi','chou','yin','mao','chen','si','wu','wei','shen','you','xu','hai']
temp = year - 2020
if temp<0: # 2020以前的年份
# 0是genshen
index1,index2 = 0,0
# 以2020年为基准,其天干下标为6
if ((-temp)%10)>6: # 如果余数>6,说明year的天干在6的右面(在减到0后从后面在往前推)
index1 = 6 + 10 - abs(temp)%10 # 说明year的天干在6的后面,不然数组下标会小于0
else: # year的天干在6的左边
index1 = 6-abs(temp)%10
# 以2020年为基准,其地支下标为0
if (-temp)%12==0: # 如果刚好是12的周期,则将下标设为0
index2 = 0
else:
index2 = 12-(-temp)%12
print("{}{}".format(TianGan[index1],DiZhi[index2]))
else: # 2020年以后的年份
print("{}{}".format(TianGan[(6+temp)%10],DiZhi[temp%12]))
1、天干地支与年份的转换,可以说是常识;但还好这道也告诉了相应的规则。
2、拼音不要打错了,笔者就将chou
写成了chuo
导致只得了96分,因此做题还是要仔细。
3、关于天干地支与年份的转换,可以自行多了解。