题目来源:http://poj.org/problem?id=1008

题目大意:

  Maya人认为一年有365天,但他们有两种日历。一种叫做Haab,有19个月。前18个月每月20天,每个月的名字分别为:pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu.每个月里的天分别用0到19编号。Haab的最后一个月叫做uayet,这个月只有五天,编号为0,1,2,3,4.Maya人认为这个月是不吉利的。

  还有一种旧的日历,叫做Tzolkin,这种日历中一年被分为13个周期,每个20天长,每天由一个数和一个名字来表示。公邮20个名字: imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau, 和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 . . .

年号被表示为0,1,...其中0是世界的开始。所以世界的第一天可以表示为:

Haab: 0. pop 0 
Tzolkin: 1 imix 0

程序的目标是将Haab日历表示的日期转换为Tzolkin日历的表示。

输入:Haab日历的输入格式为:NumberOfTheDay. Month Year

输入的第一行为一个正整数n,指明有多少个待转换的日期。后接n行,每行一个Haab日期。年数都小于5000.

输出:Tzolkin日历的输出格式为:Number NameOfTheDay Year

输出的第一行为一个正整数n,指明日期数。后接n行,每行一个转换后的日期。输出顺序与输入顺序一致。


Sample Input

  1. 3
  2. 10. zac 0
  3. 0. pop 0
  4. 10. zac 1995

Sample Output

  1. 3
  2. 3 chuen 0
  3. 1 imix 0
  4. 9 cimi 2801

本题没有什么算法上的难度,关键就是细心。小心处理数值的运算,留心不要拼错单词。我用的是C++ STL的map。

  1. //////////////////////////////////////////////////////////////////////////
  2. // POJ1008 Maya Calendar
  3. // Memory: 308K Time: 0MS
  4. // Language: C++ Result: Accepted
  5. //////////////////////////////////////////////////////////////////////////
  6.  
  7. # include <iostream>
  8. # include <string>
  9. # include <map>
  10.  
  11. using namespace std;
  12.  
  13. class dateH {
  14. public:
  15. int date;
  16. int month;
  17. int year;
  18.  
  19. dateH (int date, int month, int year) {
  20. this->date = date;
  21. this->month = month;
  22. this->year = year;
  23. }
  24. long getCount () {
  25. return * year + * (month - ) + date + ;
  26. }
  27. };
  28.  
  29. class dateT {
  30. public:
  31. int num;
  32. int count;
  33. int year;
  34.  
  35. dateT(long count) {
  36. year = (count % ) ? count / : count / - ;
  37. int remain = count - year * ;
  38. this -> count = (remain % ) ? (remain % ) : ;
  39. num = (remain % ) ? (remain % ) : ;
  40. }
  41. int getNum () {
  42. return num;
  43. }
  44. int getCount () {
  45. return count;
  46. }
  47. int getYear () {
  48. return year;
  49. }
  50. };
  51.  
  52. int main(void) {
  53. int n;
  54. cin >> n;
  55. if (n <= ) {
  56. return ;
  57. }
  58. cout << n << endl;
  59. map<string, int> Haab;
  60. map<int, string> Tzolkin;
  61.  
  62. map<string, int>::iterator itH;
  63. map<int, string>::iterator itT;
  64.  
  65. Haab.insert(pair<string, int>("pop", ));
  66. Haab.insert(pair<string, int>("no",));
  67. Haab.insert(pair<string, int>("zip", ));
  68. Haab.insert(pair<string, int>("zotz", ));
  69. Haab.insert(pair<string, int>("tzec", ));
  70. Haab.insert(pair<string, int>("xul", ));
  71. Haab.insert(pair<string, int>("yoxkin", ));
  72. Haab.insert(pair<string, int>("mol", ));
  73. Haab.insert(pair<string, int>("chen", ));
  74. Haab.insert(pair<string, int>("yax", ));
  75. Haab.insert(pair<string, int>("zac", ));
  76. Haab.insert(pair<string, int>("ceh", ));
  77. Haab.insert(pair<string, int>("mac", ));
  78. Haab.insert(pair<string, int>("kankin", ));
  79. Haab.insert(pair<string, int>("muan", ));
  80. Haab.insert(pair<string, int>("pax", ));
  81. Haab.insert(pair<string, int>("koyab", ));
  82. Haab.insert(pair<string, int>("cumhu", ));
  83. Haab.insert(pair<string, int>("uayet", ));
  84.  
  85. Tzolkin.insert(pair<int, string>(, "imix"));
  86. Tzolkin.insert(pair<int, string>(, "ik"));
  87. Tzolkin.insert(pair<int, string>(, "akbal"));
  88. Tzolkin.insert(pair<int, string>(, "kan"));
  89. Tzolkin.insert(pair<int, string>(, "chicchan"));
  90. Tzolkin.insert(pair<int, string>(, "cimi"));
  91. Tzolkin.insert(pair<int, string>(, "manik"));
  92. Tzolkin.insert(pair<int, string>(, "lamat"));
  93. Tzolkin.insert(pair<int, string>(, "muluk"));
  94. Tzolkin.insert(pair<int, string>(, "ok"));
  95. Tzolkin.insert(pair<int, string>(, "chuen"));
  96. Tzolkin.insert(pair<int, string>(, "eb"));
  97. Tzolkin.insert(pair<int, string>(, "ben"));
  98. Tzolkin.insert(pair<int, string>(, "ix"));
  99. Tzolkin.insert(pair<int, string>(, "mem"));
  100. Tzolkin.insert(pair<int, string>(, "cib"));
  101. Tzolkin.insert(pair<int, string>(, "caban"));
  102. Tzolkin.insert(pair<int, string>(, "eznab"));
  103. Tzolkin.insert(pair<int, string>(, "canac"));
  104. Tzolkin.insert(pair<int, string>(, "ahau"));
  105.  
  106. int date;
  107. int year;
  108. string month;
  109. for (int i = ; i < n; i++) {
  110. char t;
  111. cin >> date >> t >> month >> year;
  112. int m = (*Haab.find(month)).second;
  113. dateH dateh (date, m, year);
  114. long count = dateh.getCount();
  115. dateT datet (count);
  116. cout << datet.getNum() << " "
  117. << (*Tzolkin.find(datet.getCount())).second << " "
  118. << datet.getYear() << endl;
  119. }
  120.  
  121. system("pause");
  122. return ;
  123. }

POJ1008 Maya Calendar的更多相关文章

  1. 算法:POJ1008 Maya Calendar

    此题非常水,不做说明. package practice; import java.io.BufferedInputStream; import java.util.Scanner; /** * @a ...

  2. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  3. POJ 1008 Maya Calendar

    链接:http://poj.org/problem?id=1008 Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

  4. Maya Calendar 分类: POJ 2015-06-11 21:44 12人阅读 评论(0) 收藏

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 70016   Accepted: 21547 D ...

  5. [POJ] #1008# Maya Calendar : 字符处理/同余问题

    一. 题目 Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 74085   Accepted: 2 ...

  6. Poj OpenJudge 百练 Bailian 1008 Maya Calendar

    1.Link: http://poj.org/problem?id=1008 http://bailian.openjudge.cn/practice/1008/ 2.content: Maya Ca ...

  7. B - Maya Calendar(第二季水)

    Description During his last sabbatical, professor M. A. Ya made a surprising discovery about the old ...

  8. POJ 1008 Maya Calendar / UVA 300【日期转换/常量数组】

    Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 82431 Accepted: 25319 Descr ...

  9. [POJ 1008] Maya Calendar C++解题

        Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 62297   Accepted: 192 ...

随机推荐

  1. 部署和调优 2.1 squid正向代理

    安装squid yum install -y squid Squid 官方网站为 http://www.squid-cache.org 打开注释掉的 cache_dir ufs / 缓存目录的位置,大 ...

  2. Solr 空间搜索配置、按经纬度计算距离排序

    Solr 空间搜索配置 1. 在solr目录下的找到conf文件夹下的schema.xml. <fields> <!-- 在fields元素中添加如下代码 --> <fi ...

  3. ListView---复杂的listview显示

    1 . 初始化数据 private void fillData() { ll_loading.setVisibility(View.VISIBLE); // 显示进度 new Thread() { p ...

  4. java虚拟机垃圾回收机制详解

    首先,看一下java虚拟机运行的时候内存分配图: jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁.这里面主要保存线程本地变量名和局部变量值. 本地方 ...

  5. 第4章 springboot热部署 4-1 SpringBoot 使用devtools进行热部署

    /imooc-springboot-starter/src/main/resources/application.properties #关闭缓存, 即时刷新 #spring.freemarker.c ...

  6. [cf557d]Vitaly and Cycle(黑白染色求奇环)

    题目大意:给出一个 n 点 m 边的图,问最少加多少边使其能够存在奇环,加最少边的情况数有多少种. 解题关键:黑白染色求奇环,利用数量分析求解. 奇环:含有奇数个点的环. 二分图不存在奇环.反之亦成立 ...

  7. Python_pip_02_利用pip安装模块(以安装pyperclip为例)

    >任务:利用pip安装pyperclip模块 >前提 你已经在你的电脑里面安装啦Python2.7的Windows版本,并且已经配置了环境变量 >实现步骤 >>打开你的P ...

  8. 杭电acm 1108题

    这是一道求两个整数最大公倍数的问题,题目比较简单.... 直接使用穷举法计算,数据不是很大.... #include "iostream" using namespace std; ...

  9. ZROI #88

    传送门 分析 我们考虑把每个A[i]考虑为山峰的高度,每次的B考虑为海平面 于是我们知道对于A[i]和A[i-1],如果A[i-1]<A[i]则在A[i-1]<B<=A[i]时会使陆 ...

  10. loj2436 糖果

    传送门 分析 我们知道对于一个不等式a<b可以将其转化为a+1<=b的形式,在知道这个之后我们便可以将5个关系进行差分约束了,具体的建边方式见代码.注意由于每个人都必须有糖,我们把每个人的 ...