POJ1008 日期转换(5)

来源:互联网 发布:java环境变量一键配置 编辑:程序博客网 时间:2024/05/16 08:57

1 题意

2 分析

唯一需要注意的,是Haab日历,每个月都是从0开始的,所以算sumday,在最后一个月除了+day_h,还要+1。

3

#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;char Haab_month_name[20][10]={"","pop","no","zip", "zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};//int Haab_month_day[20]={0,20,20,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,4};//int Tzolkin_name_num[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};char Tzolkin_name_zimu[20][10]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};int sumday,year_h,month_h,day_h;int year_t,num_t,zimu_t;int n;void Cal_sumday(){    sumday=0;    for(int i=0;i<year_h;i++){        sumday+=365;    }    for(int i=1;i<month_h;i++){        sumday+=20;    }    sumday+=(day_h+1);//day 从0开始}void Print(){    year_t=0;    for(int i=0;sumday>260;i++){        year_t=i+1;        sumday-=260;    }    num_t=(sumday-1)%13+1;    zimu_t=(sumday-1)%20;    printf("%d %s %d\n",num_t,Tzolkin_name_zimu[zimu_t],year_t);}int main(){    char str_month[10];    scanf("%d",&n);    cout<<n<<endl;    while(n--){        scanf("%d.%s%d",&day_h,str_month,&year_h);        for(int i=1;i<=19;i++){            if(strcmp(Haab_month_name[i],str_month)==0){                month_h=i;                break;            }        }        Cal_sumday();        //cout<<"sumday: "<<sumday<<endl;        Print();    }}

0 0
原创粉丝点击