这题乍一看好像很麻烦的样子,请原谅我的英语。
花了很久看完题才知道,他让我把一个日期表示转成另一个日期表示。
然后。。。
//PKU_1008
//读入题,注意把'.'读走
#include <iostream>
#include <string>
using namespace std;
string HaabMonth[19]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax",
"zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};
string TzolkinDate[20]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat",
"muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
int toDateNum(string s)
{
int i=0;
while ((i<=18)&&(s!=HaabMonth[i]))
i++;
return i;
}
int toNumOfDay(int date,string month,int year)
{
int monthNum=toDateNum(month);
return year*365+monthNum*20+date+1;
}
int main()
{
int n;
cin>>n;
cout<<n<<endl;
while (n--)
{
int HaabDate,HaabYear,TzolkinDateNum,TzolkinYear;
string HaabMonth,TzolkinDateName;
char c;
cin>>HaabDate>>c>>HaabMonth>>HaabYear;
int numOfDay=toNumOfDay(HaabDate,HaabMonth,HaabYear);
TzolkinYear=(numOfDay-1)/260;
TzolkinDateNum=(numOfDay-1)%13+1;
TzolkinDateName=TzolkinDate[(numOfDay-1)%20];
cout<<TzolkinDateNum<<' '<<TzolkinDateName<<' '<<TzolkinYear<<endl;
}
return 0;
}