题目来源: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

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

Sample Output

3
3 chuen 0
1 imix 0
9 cimi 2801

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

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

View Code

转载于:https://www.cnblogs.com/dengeven/p/3226438.html

POJ1008 Maya Calendar相关推荐

  1. POJ - 1008 Maya Calendar

    简单模拟,现将第一种日历表示的天数计算出来,再转换为第二种日历.注意边写边检查 POJ - 1008Maya Calendar Time Limit: 1000MS Memory Limit: 100 ...

  2. 百炼1008:Maya Calendar

    描述 During his last sabbatical, professor M. A. Ya made a surprising discovery about the old Maya cal ...

  3. Maya Calendar

    学会用字符数组来存.还有读取数据的细节.两个年对应的关系. #include <iostream> #include <cstring> #include <cstdio ...

  4. 1008:Maya Calendar

    题意:将Habb日历,天 月 年:表示成Tzolkin日历 数字 名称 年 Habb 第一年从0开始,一年 = 365天 = 19个月 每月对应字母,前18个月 = 20天,第一天从0开始 第19个月 ...

  5. 【POJ】1008 Maya Calendar

    参考:https://blog.csdn.net/u011392408/article/details/28866779 https://blog.csdn.net/qq_36424540/artic ...

  6. TYUT-A专题题解(一)

    TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...

  7. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  8. Bailian2965 玛雅历【日期计算】

    2965:玛雅历 总时间限制: 1000ms 内存限制: 65536kB 描述 上周末,M.A. Ya教授对古老的玛雅有了一个重大发现.从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了 ...

  9. 冬令营第二天(1.19)

    文章目录 问题A:Maya Calendar 问题B:Diplomatic License 问题C:Accordian" Patience 问题D:Broken Keyboard (a.k. ...

最新文章

  1. linux tc打造ip流量限制
  2. Acunetix WVS安全测试软件使用教程(入门级)
  3. 「镁客早报」特朗普复活美国太空指挥部;ATT的5G网络在美国12个城市上线
  4. mysql导入frm文件_MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程
  5. Lucene全文检索过程
  6. golang mysql 崩溃_mysql连接问题,goruntime里执行总是出错,程序一直崩溃
  7. 微信小程序php实现登陆的代码,微信小程序实现微信登录
  8. 我的前同事,阿里大牛的技术感悟
  9. java restcontroller_Spring框架:@RestController与@Controller
  10. 【Matlab学习笔记】【函数学习】max()和max(max())的区别
  11. Windows新版算号器技术原理
  12. 代码抛出异常后进行事务回滚的两种方式(Spring @Transactional注解)
  13. QGIS制作好看地形图
  14. 微信小程序 体验版开启调试模式
  15. 计算机电子表格证怎么样,初学者在电脑上如何制作电子表格
  16. 数据库的研究内容主要有哪些方面?
  17. iOS苹方字体使用说明
  18. java poi 导出excel设置数据有效性
  19. 宇视科技C-C++软件开发岗位校招面试过程
  20. 练习---打印出电影天堂中电影的下载链接

热门文章

  1. 幽门螺旋菌会自愈吗?医生一般不告诉你
  2. 3D文档(BRD、MRD、PRD)怎么写
  3. 深度操作系统deepin安装pip
  4. 点云深度学习系列由浅入深之--SPLATNet: Sparse Lattice Networks for Point Cloud Processing
  5. java毕业设计社区住户信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  6. cpu 性能优化思路
  7. windows系统mysql手动,自动备份方法
  8. 洛谷-P5734-文字处理软件
  9. 中国等高线地形图如何获取?超简单的方法教给你
  10. SEO高手都有哪些技术手段