码迷,mamicode.com
首页 > 其他好文 > 详细

POJ1008

时间:2014-08-22 19:39:29      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   strong   for   ar   2014   div   

 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

标签:style   blog   color   io   strong   for   ar   2014   div   

原文地址:http://www.cnblogs.com/glczero/p/3930100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!