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

 //////////////////////////////////////////////////////////////////////////
// POJ1008 Maya Calendar
// Memory: 308K Time: 0MS
// Language: C++ Result: Accepted
////////////////////////////////////////////////////////////////////////// # include <iostream>
# include <string>
# include <map> using namespace std; class dateH {
public:
int date;
int month;
int year; dateH (int date, int month, int year) {
this->date = date;
this->month = month;
this->year = year;
}
long getCount () {
return * year + * (month - ) + date + ;
}
}; class dateT {
public:
int num;
int count;
int year; dateT(long count) {
year = (count % ) ? count / : count / - ;
int remain = count - year * ;
this -> count = (remain % ) ? (remain % ) : ;
num = (remain % ) ? (remain % ) : ;
}
int getNum () {
return num;
}
int getCount () {
return count;
}
int getYear () {
return year;
}
}; int main(void) {
int n;
cin >> n;
if (n <= ) {
return ;
}
cout << n << endl;
map<string, int> Haab;
map<int, string> Tzolkin; map<string, int>::iterator itH;
map<int, string>::iterator itT; Haab.insert(pair<string, int>("pop", ));
Haab.insert(pair<string, int>("no",));
Haab.insert(pair<string, int>("zip", ));
Haab.insert(pair<string, int>("zotz", ));
Haab.insert(pair<string, int>("tzec", ));
Haab.insert(pair<string, int>("xul", ));
Haab.insert(pair<string, int>("yoxkin", ));
Haab.insert(pair<string, int>("mol", ));
Haab.insert(pair<string, int>("chen", ));
Haab.insert(pair<string, int>("yax", ));
Haab.insert(pair<string, int>("zac", ));
Haab.insert(pair<string, int>("ceh", ));
Haab.insert(pair<string, int>("mac", ));
Haab.insert(pair<string, int>("kankin", ));
Haab.insert(pair<string, int>("muan", ));
Haab.insert(pair<string, int>("pax", ));
Haab.insert(pair<string, int>("koyab", ));
Haab.insert(pair<string, int>("cumhu", ));
Haab.insert(pair<string, int>("uayet", )); Tzolkin.insert(pair<int, string>(, "imix"));
Tzolkin.insert(pair<int, string>(, "ik"));
Tzolkin.insert(pair<int, string>(, "akbal"));
Tzolkin.insert(pair<int, string>(, "kan"));
Tzolkin.insert(pair<int, string>(, "chicchan"));
Tzolkin.insert(pair<int, string>(, "cimi"));
Tzolkin.insert(pair<int, string>(, "manik"));
Tzolkin.insert(pair<int, string>(, "lamat"));
Tzolkin.insert(pair<int, string>(, "muluk"));
Tzolkin.insert(pair<int, string>(, "ok"));
Tzolkin.insert(pair<int, string>(, "chuen"));
Tzolkin.insert(pair<int, string>(, "eb"));
Tzolkin.insert(pair<int, string>(, "ben"));
Tzolkin.insert(pair<int, string>(, "ix"));
Tzolkin.insert(pair<int, string>(, "mem"));
Tzolkin.insert(pair<int, string>(, "cib"));
Tzolkin.insert(pair<int, string>(, "caban"));
Tzolkin.insert(pair<int, string>(, "eznab"));
Tzolkin.insert(pair<int, string>(, "canac"));
Tzolkin.insert(pair<int, string>(, "ahau")); int date;
int year;
string month;
for (int i = ; i < n; i++) {
char t;
cin >> date >> t >> month >> year;
int m = (*Haab.find(month)).second;
dateH dateh (date, m, year);
long count = dateh.getCount();
dateT datet (count);
cout << datet.getNum() << " "
<< (*Tzolkin.find(datet.getCount())).second << " "
<< datet.getYear() << endl;
} system("pause");
return ;
}

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. EF事务封装

    public class EFTransaction:ITransaction { DbContextTransaction originalTransaction = null; MyDbConte ...

  2. 数据库理论-范式(1NF、2NF、3NF)

    范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”. 第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项.(每个属性不可分割)第二范式(2NF)要求数据 ...

  3. TCP UDP HTTP 的关系和区别

    TCP UDP HTTP 三者的关系: TCP/IP是个协议组,可分为四个层次:网络接口层.网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传 ...

  4. ES6中的Set与Map数据结构

    本文实例讲述了ES6学习笔记之Set和Map数据结构.分享给大家供大家参考,具体如下: 一.Set ES6提供了新的数据结构Set.类似于数组,只不过其成员值都是唯一的,没有重复的值. Set本身是一 ...

  5. ROS Learning-023 (提高篇-001) 准备工作 --- 安装一些必要的软件包

    ROS 提高篇-001 - 准备工作 - 安装一些必要的软件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LTS ROS 版本 ...

  6. 把数据分配到view

  7. LeetCode第496题:下一个更大元素 I

    问题描述 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的下一个比其大的值. nums1 中数字 x ...

  8. STL-- vector中resize()和reserve()区别

    最近写了一个小型的STL--TinySTL.发现有一些基础的东西需要记录下来,所以我打算多写一些东西,方便以后查看. 先看看<C++ Primer>中对resize()函数两种用法的介绍: ...

  9. 《Head First Servlets & JSP》-10-定制标记开发

    标记文件:很想include,但是比include更好 建立和使用标记文件的最简方法 取一个被包含文件(如Header.jsp),把它重命名为带有一个.tag扩展名(Header.tag): 把标记文 ...

  10. python 常用的一些库

    AllPairs 2.0.1Appium-Python-Client 0.24asn1crypto 0.24.0attrs 17.4.0AutoItLibrary 1.1bcrypt 3.1.4bea ...