日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ1008 Maya Calendar

發布時間:2023/12/29 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1008 Maya Calendar 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目來源: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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。