题目描述
这道题的难度并不大,只是一个日期的转换,很久之前也做过这道题
1、先将输入的日期转换为距离日期开始点的天数: date = year365+month20+天数
2、 根据date求出Tzolkin日历格式的年份,月份,天数
year = date/260;
数字=date%13+1; (加1是因为数字从1开始)
天名字下标=date%20;(20个天名字的下标从0到19,根据计算出的天名字下标就可以得到相应的天名字)
#include <iostream>
#include <string>
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 n;
cin>>n;
float day;
string month;
int mm;
int year;
int date;
int i;
cout<<n<<endl;
while(n--){
cin>>day>>month>>year;
for(i=0;i<19;i++){
if(month==Month[i])
break;
}
date=365*year+20*i+day;
year=date/260;
mm=date%13+1;
day=date%20;
cout<<mm<<" "<<Cycle[(int)day]<<" "<<year<<endl;
}
}