百练OJ:2965:玛雅历
題目鏈接:
點擊打開題目
2965:瑪雅歷
總時間限制:? 上周末,M.A. Ya教授對古老的瑪雅有了一個重大發現。從一個古老的節繩(瑪雅人用于記事的工具)中,教授發現瑪雅人使用了一個一年有365天的叫做Haab的歷法。這個Haab歷法擁有19個月,在開始的18個月,一個月有20天,月份的名字分別是pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu。這些月份中的日期用0到19表示。Haab歷的最后一個月叫做uayet,它只有5天,用0到4表示。瑪雅人認為這個日期最少的月份是不吉利的,在這個月法庭不開庭,人們不從事交易,甚至沒有人打掃屋中的地板。?
因為宗教的原因,瑪雅人還使用了另一個歷法,在這個歷法中年被稱為Tzolkin(holly年),一年被分成13個不同的時期,每個時期有20天,每一天用一個數字和一個單詞相組合的形式來表示。使用的數字是1~13,使用的單詞共有20個,它們分別是:imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau。注意:年中的每一天都有著明確唯一的描述,比如,在一年的開始,日期如下描述: 1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, ,8 imix, 9 ik, 10 akbal ……也就是說數字和單詞各自獨立循環使用。?
Haab歷和Tzolkin歷中的年都用數字0,1,……表示,數字0表示世界的開始。所以第一天被表示成:?
Haab: 0. pop 0?
Tzolkin: 1 imix 0?
請幫助M.A. Ya教授寫一個程序可以把Haab歷轉化成Tzolkin歷。?
日期. 月份 年數?
輸入中的第一行表示要轉化的Haab歷日期的數據量。下面的每一行表示一個日期,年數小于5000。
天數字 天名稱 年數?
第一行表示輸出的日期數量。下面的每一行表示一個輸入數據中對應的Tzolkin歷中的日期。
解題思路:解題思路主要是對于給出日歷,是從首日算起的第幾天,然后在轉化為新日歷的那一天即可
解題代碼
def getTdate(hdate):str= hdate.split('.')day=str[0]str2=str[1]str2=str2.split()day=int(str[0])month=HaabMonth.index(str2[0])year=int(str2[1])data=365*year+month*20+day+1year2=data//260month2=data%20day2=data%13print(day2,TzolkinMonth[month2],year2)return HaabMonth=('pop', 'no', 'zip', 'zotz', 'tzec', 'xul', 'yoxkin', 'mol', 'chen', 'yax', 'zac', 'ceh', 'mac', 'kankin', 'muan', 'pax', 'koyab','cumhu','uayet') TzolkinMonth=( 'imix','ik', 'akbal', 'kan', 'chicchan', 'cimi', 'manik', 'lamat', 'muluk', 'ok', 'chuen', 'eb', 'ben', 'ix', 'mem', 'cib', 'caban', 'eznab', 'canac', 'ahau') n=int(input()) print (n) while n>0:h=input()t=getTdate(h)n=n-1
總結
以上是生活随笔為你收集整理的百练OJ:2965:玛雅历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3 实现 A+B Probl
- 下一篇: 百练OJ:2746:约瑟夫问题