POJ1008Maya Calendar

转载请注明出处:優YoU   http://user.qzone.qq.com/289065406/blog/1309435560

 

大致题意:

有中文版= = 我不多说

 

解题思路:

模拟题,细心点就好了,没难度。

Habb历一年365

Tzolkin历一年260

先计算Habb历从第0天到输入日期的总天数sumday

Sumday/day就是Tzolkin历的年份

Tzolkin历的天数Name20一循环,先建立Tzolkin历天数Name1~20的映射,

因此Sumday %20+1就是Tzolkin历的天数Name

Tzolkin历的天数ID13一循环,且从1开始,则Sumday %13+1就是Tzolkin历的天数ID

 

 

 1 //Memory Time  
2 //264K 0MS
3
4 #include<iostream>
5 using namespace std;
6
7 /*得到Haab历月份对应的数字*/
8 int GetMonth(char* month)
9 {
10 int ASCII=0;
11 for(int i=0;month[i];i++)
12 ASCII+=month[i];
13
14 switch(ASCII)
15 {
16 case 335:return 1; //pop
17 case 221:return 2; //no
18 case 339:return 3; //zip
19 case 471:return 4; //zotz
20 case 438:return 5; //tzec
21 case 345:return 6; //xul
22 case 674:return 7; //yoxkin
23 case 328:return 8; //mol
24 case 414:return 9; //chen
25 case 338:return 10; //yax
26 case 318:return 11; //zac
27 case 304:return 12; //ceh
28 case 305:return 13; //mac
29 case 636:return 14; //kankin
30 case 433:return 15; //muan
31 case 329:return 16; //pax
32 case 534:return 17; //koyab
33 case 546:return 18; //cumhu
34 case 552:return 19; //uayet
35 }
36 }
37 /*计算Haab历从第0天到现在的天数*/
38 int HaabDay(int day,int month,int year)
39 {
40 int sumday=0;
41 for(int i=0;i<year;i++) //Haab历法一年有365天
42 sumday+=365;
43
44 for(int j=1;j<month;j++)
45 sumday+=20;
46
47 return sumday+day;
48 }
49
50 int main(void)
51 {
52 char TzolkinDayName_Str[21][10]={"0","imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
53 int day;
54 char doc; //注意输入格式有 "."
55 char month[10];
56 int year;
57
58 int test;
59 cin>>test;
60 cout<<test<<endl;
61 while(test-- && (cin>>day>>doc>>month>>year)) //日期. 月份 年数
62 {
63 int sumday=HaabDay(day,GetMonth(month),year);
64
65 int TzolkinYear=sumday/260; //Tzolkin历法一年有260天
66 int TzolkinDayName=sumday%20+1;
67 int TzolkinDayId=sumday%13+1;
68
69 cout<<TzolkinDayId<<' '<<TzolkinDayName_Str[TzolkinDayName]<<' '<<TzolkinYear<<endl;
70 }
71 return 0;
72 }

原文地址:https://www.cnblogs.com/lyy289065406/p/2121381.html