1 題意
2 分析
唯一需要注意的,是Haab日曆,每個月都是從0開始的,所以算sumday,在最後一個月除了+day_h,還要+1。
3
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
char Haab_month_name[20][10]={"","pop","no","zip", "zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};
//int Haab_month_day[20]={0,20,20,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,4};
//int Tzolkin_name_num[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
char Tzolkin_name_zimu[20][10]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
int sumday,year_h,month_h,day_h;
int year_t,num_t,zimu_t;
int n;
void Cal_sumday(){
sumday=0;
for(int i=0;i<year_h;i++){
sumday+=365;
}
for(int i=1;i<month_h;i++){
sumday+=20;
}
sumday+=(day_h+1);//day 從0開始
}
void Print(){
year_t=0;
for(int i=0;sumday>260;i++){
year_t=i+1;
sumday-=260;
}
num_t=(sumday-1)%13+1;
zimu_t=(sumday-1)%20;
printf("%d %s %d\n",num_t,Tzolkin_name_zimu[zimu_t],year_t);
}
int main()
{
char str_month[10];
scanf("%d",&n);
cout<<n<<endl;
while(n--){
scanf("%d.%s%d",&day_h,str_month,&year_h);
for(int i=1;i<=19;i++){
if(strcmp(Haab_month_name[i],str_month)==0){
month_h=i;
break;
}
}
Cal_sumday();
//cout<<"sumday: "<<sumday<<endl;
Print();
}
}