zoukankan      html  css  js  c++  java
  • Maya Calendar 1008 PKU

    Description:

    http://acm.pku.edu.cn/JudgeOnline/problem?id=1008

    Haab Calendar(365 days per year)

    Month1~18: 20 days per month:0~19

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

    Month 19: 5 days per mont: 0~4

    Uayet

    Tzolkin Calendar(holly year):13个时期,每个时期20daysà 260days per year

    used 20 names:imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben,ix, mem, cib, caban, eznab, canac, ahau and 13 numbers; both in cycles

    Haab Calendar 、Tzolkin Calendar年份均从0开始

    第一天分别为

    Haab: 0. pop 0

    Tzolkin: 1 imix 0

    现在给出一个Haab时间,要求转换为Tzolkin时间

    Solution:

    将Haab时间转换成从第一天开始的天数,然后转换成Tzolkin时间

    1 #include <stdio.h>
    2 #include <string.h>
    3
    4  #define CHARSIZE 16
    5
    6  // 显然,GCC不允许在定义全局数组时使用const常量来作为数组的大小,用宏却是可以的
    7  const int SizeOfMonthTzolkin=20;
    8  char monthTzolkinStr[20+1][CHARSIZE]={
    9 "","imix", "ik", "akbal", "kan",
    10 "chicchan", "cimi", "manik", "lamat",
    11 "muluk", "ok", "chuen", "eb",
    12 "ben", "ix", "mem", "cib",
    13 "caban", "eznab", "canac", "ahau"};
    14 const int SizeOfMonthHaab=19;
    15 char monthHaabStr[19+1][CHARSIZE] ={
    16 "","pop", "no", "zip", "zotz",
    17 "tzec", "xul", "yoxkin", "mol",
    18 "chen", "yax", "zac", "ceh",
    19 "mac", "kankin", "muan", "pax",
    20 "koyab", "cumhu", "uayet"};
    21
    22 int FindHaabMonth(char *inStr)
    23 {
    24 int i=0;
    25
    26 for (i=SizeOfMonthHaab; i>1; i--)
    27 if (strcmp(inStr,monthHaabStr[i])==0)
    28 break;
    29 return i;
    30 }
    31
    32 int main ()
    33 {
    34 int testcase=0;
    35 char inStr[CHARSIZE];
    36 int totalDays=0,yearHaab=0,dayHaab=0,dayTzolkin=0,yearTzolkin=0;
    37 int monthTzolkin=0;
    38
    39 scanf ("%d", &testcase);
    40
    41 printf ("%d\n",testcase);
    42 while (testcase--)
    43 {
    44 scanf ("%d.%s%d",&dayHaab,inStr,&yearHaab);
    45
    46 totalDays = yearHaab*365 + (FindHaabMonth(inStr)-1)*20 + dayHaab+1;
    47
    48 totalDays --;
    49 yearTzolkin = totalDays / 260;
    50 totalDays %= 260;
    51 monthTzolkin = totalDays % 20 + 1;
    52 dayTzolkin = totalDays % 13 + 1;
    53 printf ("%d %s %d\n",dayTzolkin,monthTzolkinStr[monthTzolkin],yearTzolkin);
    54 }
    55 return 0;
    56 }

  • 相关阅读:
    LeetCode100——same tree
    Stl——Vector.erase()用法
    xor异或逻辑运算
    爬楼梯问题——迭代or递归
    简单博弈论取石子
    纪念我的leetcode开门之旅
    JiuDuOj——1049
    [Codeforces 872]比赛记录
    [BZOJ 4563]放棋子
    10.14
  • 原文地址:https://www.cnblogs.com/eavn/p/1753193.html
Copyright © 2011-2022 走看看