题目链接:玛雅历
Description
Input
Output
Sample Input
3
10. zac 0
0. pop 0
10. zac 1995
Sample Output
3
3 chuen 0
1 imix 0
9 cimi 2801
主要思路:
1. 数据输入时直接计算出输入日期与元年元月元日的绝对日期(距离);
2. 通过取模操作就可以计算出 Tzolkin历中的日期;
3. 注意Tzolkin历中周期由1开始,因此取模运输后别忘了加 1
源代码:
#include
#include
using namespace std;
string Month[] = {"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"};
string Cycle[] = {"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"};
int main()
{
int size;
cin >> size;
int* AbsData = new int[size];
float d = 0;
string sm = "";
int m = 0;
int y = 0;
for(int i = 0; i < size; i++)
{
cin >> d >> sm >> y;
for(m = 1; m <= 18; m++)
{
if(sm == Month[m-1])
break;
}
AbsData[i] = 365 * y + 20 * (m - 1) + (d);
//cout << AbsData[i] << endl;
}
int day = 0;
cout << size << endl;
for(int j = 0; j < size; j++)
{
y = AbsData[j] / 260;
m = AbsData[j] % 13 + 1;
day = AbsData[j] % 20;
cout << m << " " << Cycle[day] << " " << y << endl;
}
return 0;
}