題目:瑪雅的兩套力法轉換,第一套為19個月前18個月,每個月20天,最後一個5天;
第二套曆法類似中國古代的干支紀年法,13個天干和20個地支獨立循環260天一週期。
分析:入門題,數論。進制轉化題目。
先將曆法一的時間轉化成到第1天的總天數:sum=365*year+20*(month-1)+day;
然後轉化成第二種計數方式:year=sum/260,month=sum%13,day=sum%20。
說明:╮(╯▽╰)╭。
#include <cstring>
#include <cstdio>
char Haab[19][10] = {
"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax",
"zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"
};
char Tzolkin[20][10] = {
"imix", "ik", "akbal", "kan", "chicchan", "cimi",
"manik", "lamat", "muluk", "ok", "chuen", "eb", "ben",
"ix", "mem", "cib", "caban", "eznab", "canac", "ahau"
};
int main()
{
int n, day, year, sum;
char month[10];
while (~scanf("%d",&n)) {
printf("%d\n",n);
for (int i = 0; i < n; ++ i) {
scanf("%d.%s%d",&day, month, &year);
for (int j = 0; j < 19; ++ j)
if (!strcmp(Haab[j], month)) {
sum = year*365 + j*20 + day;
break;
}
printf("%d %s %d\n",sum%13+1,Tzolkin[sum%20],sum/260);
}
}
return 0;
}