POJ 1008--Maya Calendar

题意

题目的意思是,有两种日历,第一种称为Haab,一年为365天,一年19个月,前18个月每个月20天,第19个月为5天,每个月的名字分别为pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu和uayet,每个月份中的天数用0到19表示。最后一个月份中的天数用0到4表示。第二个日历称为Tzolkin,在这个日历中,一年为260天,一年分为13段,每段20天(260=13*20),每一天用一个数字和一个名字表示,总共20个名字: imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau,数字为1到13,数字和名字都顺序循环,例如,第一年开始的几天为:1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, 然后进入下一段 8 imix, 9 ik, 10 akbal。

分析

把输入的Haab日期转换为Tzolkin日历,简单的映射一下即可,代码如下:

Memory: 264K Time: 0MS Length:29LINES

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
    map<string, int> Haab;  //日历的映射
    Haab["uayet"] = 18; Haab["cumhu"] = 17; Haab["koyab"] = 16; Haab["pax"] = 15; Haab["muan"] = 14; Haab["kankin"] = 13; Haab["mac"] = 12;
    Haab["ceh"] = 11; Haab["zac"] = 10; Haab["yax"] = 9; Haab["chen"] = 8; Haab["mol"] = 7; Haab["yoxkin"] = 6; Haab["xul"] = 5;
    Haab["tzec"] = 4; Haab["zotz"] =  3; Haab["zip"] = 2; Haab["no"] = 1; Haab["pop"] = 0;  
    string Tzolkin[20];
    Tzolkin[0] = "imix"; Tzolkin[1] = "ik"; Tzolkin[2] = "akbal"; Tzolkin[3] = "kan"; Tzolkin[4] = "chicchan"; Tzolkin[5] = "cimi";
    Tzolkin[6] = "manik"; Tzolkin[7] = "lamat"; Tzolkin[8] = "muluk"; Tzolkin[9] = "ok"; Tzolkin[10] = "chuen"; Tzolkin[11] = "eb";
    Tzolkin[12] = "ben"; Tzolkin[13] = "ix"; Tzolkin[14] = "mem"; Tzolkin[15] = "cib"; Tzolkin[16] = "caban"; Tzolkin[17] = "eznab";
    Tzolkin[18] = "canac"; Tzolkin[19] = "ahau";
    int count = 0;
    cin >> count;
    float days = 0;
    string month;
    int years = 0;
    cout << count << endl;
    int tmp;
    while (cin >> days >> month >> years)
    {   
        tmp = 365 * years + 20 * Haab[month] + (int)days;
        cout << tmp % 13 + 1 << " " << Tzolkin[tmp % 20] << " " << tmp / 260 << endl;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值