首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。