POJ1008 日期转换(5)

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();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值