完整题意(摘录与百度贴吧):
在他的最近的一次休假期间,博士M.A.Ya有了一个惊人的发现,是关于一个古老玛亚日历。
来自一个很老的信息,教授发现,这个玛亚文明使用了一个365天长的一年,叫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,1,2,3,4指定。
这些玛亚人相信,这个月是没有好运气的,在这一段时间里,正确的事不存在,贸易停止了,人们连地都不扫。
为了宗教的目的,在这一年中,这些玛亚人使用了其它的日历,这种年被称为Tzolkin(holly年)。
这个年被分进十三个时期中,每一个20天长。每一天由一个数字和这天的名字一起表示。它们用20个名字:
imix,ik,akbal,kan,chicchan,cimi,manik,lamat,muluk,ok,
chuen,eb,ben,ix,mem,cib,caban,eznab,Canac,ahau
和 数字(1~13)一起在一个20天月的周期里成对表示一天。
注意:每一天有一个清楚的描述。举个例子,在这一年所有天的最开始的一天
被描述成以下:
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 (Haab年:第0天,pop天名,第0年)
· Tzolkin: 1 imix 0 (Tzolkin年:第0天,imix天名,第0年)
帮助教授M.A.Ya写一个程序,给他转换日期,
从Haab日历转换成Tzolkin日历。
Input
在下列格式中,Haab年里的日期被给予:
天的编号. 月 年
在输入里,输入的第一行包含这些输入日期的一个数目。
下一行在Haab日历格式里,包含n个日期,它们的每一个在每个隔行中的。这个年小于5000。
Output
在下面的格式中,在Tzolkin里的日期将是。
编号 天的名字 年
输出的第一行包含这些输出日期的数目。
在下面n行里,这些是在Tzolkin日历格式里的日期,在这个顺序里,对应着输入的那些日期。
上面的题目那么长又不想细看,那我就帮忙简述一下吧 ^-^
…题意就是有两种日历:
1、一年365天,19个月。前18个月每月20天,第十九月5天。(每个月都有一个英文名)
2、一年260天,13个月,每月20天。(这260天每一天都有一个名字(由数字0~13和20个字符组合而成)(。。这不由让我想起了天干地支纪年法qaq))
——然后给出日历1的年月日,输出日历2对应的年月日
思路很简单:日历1算出对应的总天数,然后转化到日历2。接着强势模拟一波,出来咯^.^
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
const int maxn = 5005;
string Haab[20] = {"/","pop", "no", "zip", "zotz", "tzec", "xul",
"yoxkin", "mol", "chen", "yax", "zac", "ceh",
"mac", "kankin", "muan", "pax", "koyab", "cumhu",
"uayet"};
string Tzolkin[20] = {"imix", "ik", "akbal", "kan", "chicchan",
"cimi", "manik", "lamat", "muluk", "ok",
"chuen", "eb", "ben", "ix", "mem", "cib",
"caban", "eznab", "canac", "ahau"};
int main()
{
int tt;
scanf("%d",&tt);
printf("%d\n",tt);
while(tt--){
int a, b;
string c;
scanf("%d. ",&a);
cin>>c;
scanf(" %d",&b);
int pos = 0;
for (int i = 1; i < 20; i++){
if(c == Haab[i]){
pos = i;
break;
}
}
int tot = b*365 + (pos-1)*20 + a;
int x = tot/260;
int y = tot%260;
int y1 = y%13+1;
int y2 = y%20;
printf("%d ",y1);
cout<<Tzolkin[y2];
printf(" %d\n",x);
}
return 0;
}