D - Maya Calendar (POJ-1008)(模拟)

玛雅使用两种日历,第一种称为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 …

现在给你一个Haab日期,让你转换为Tzolkin日期。

Input

第一行有一个n表示Haab日期的数量,接下来n行,每行一个待转换的Haab日期。

Haab日期给是输入如下:
NumberOfTheDay. Month Year

TIP:年份不超过5000

Output

第一行输出一个数字,表示Tzolkin的数量,接下来每行一个转换完毕的Tzolkin日期。

输出每行一个Tzolkin日期,格式如下:
Number NameOfTheDay Year

Sample Input

3
10. zac 0
0. pop 0
10. zac 1995

Sample Output

3
3 chuen 0
1 imix 0
9 cimi 2801

TIP

Haab

{"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"}

Tzolkin

{"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok",  "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"}

题意:中文题,不过多叙述题意。

思路:这道题的话,昨天比赛的时候也没来得及看,害,这道题就是一个水题,只需要把它给你的一种日历表示转化成另一种日历表示即可。

AC代码:

#include <stdio.h>
#include <string>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <queue>
#include <stack>
#include <vector>
typedef long long ll;
const int maxx=1000010;
const int inf=0x3f3f3f3f;
const int mod=10007;
using namespace std;
char s1[20][10]= {"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen",
                  "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"
                 };
char s2[20][10]= {"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat",
                  "muluk", "ok",  "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"
                 };
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d\n",n);
    for(int i=0; i<n; i++)
    {
        int a,b;
        char c[10];
        scanf("%d. %s %d",&a,c,&b);
        int ans;
        for(int j=0; j<19; j++)
        {
            ans=j;
            if(!strcmp(s1[j],c))
                break;
        }
        int cnt=b*365+ans*20+a;
        printf("%d %s %d\n",cnt%13+1,s2[cnt%20],cnt/260);
    }
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值