首页 > 代码库 > POJ1008

POJ1008

 2014-08-22

题意:

  (有中文版题目。。)

   就是两种历法的转换

 

思路:

  把两种历法的细节了解了就很简单了

  Haab历法一年365,Tzolkin一年260天

  先求出总天数sumDay,然后sumDay/260就是Tzolkin历的年份

  T历的天名称20一循环,我们只需建立名称与1-20的关系就行,对20取模即可

  T历的天数字同理可得到

  (注意输入输出格式!)

代码:

  

 1 //Memory Time   2 //352K   0MS  3  4 #include <stdio.h> 5  6 int getHmonth(char *Hmonth){ 7     int i,asciiSum=0; 8     for(i=0;Hmonth[i];i++){ 9         asciiSum+=Hmonth[i];10     }11     //将H历每个月份所含字母的ascii码求和,利用swich语句得到对应第几个月(注意从0开始的)12     switch(asciiSum)13     {14         case 335:15             return 0;  16         case 221:17             return 1;  18         case 339:19             return 2;  20         case 471:21             return 3;  22         case 438:23             return 4;  24         case 345:25             return 5; 26         case 674:27             return 6;28         case 328:29             return 7;30         case 414:31             return 8; 32         case 338:33             return 9;  34         case 318:35             return 10;36         case 304:37             return 11;  38         case 305:39             return 12; 40         case 636:41             return 13;42         case 433:43             return 14;44         case 329:45             return 15;46         case 534:47             return 16;48         case 546:49             return 17;50         case 552:51             return 18;52     }53 }54 int main()55 {56     char Tday[21][10]={"ahau","imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};57     int i,n;58     scanf("%d",&n);59     printf("%d\n",n);60     int sumDay,Hyear,Hday,hMonthNum;61     char Hmonth[10];62     for(i=0;i<n;i++){63         scanf("%d. %s %d",&Hday,Hmonth,&Hyear);64         hMonthNum=getHmonth(Hmonth);65         sumDay=365*Hyear+Hday+hMonthNum*20;66         printf("%d %s %d\n",sumDay%13+1,Tday[sumDay%20+1],sumDay/260);67     }68     return 0;69 }

 

PS:注意下一些"+1"之类的细节

 

POJ1008