程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 百練 2965 瑪雅歷 解題報告

百練 2965 瑪雅歷 解題報告

編輯:C++入門知識

1.鏈接:http://poj.grids.cn/practice/2965/

2.題目:

總時間限制:
1000ms
內存限制:
65536kB
描述
上周末,M.A. Ya教授對古老的瑪雅有了一個重大發現。從一個古老的節繩(瑪雅人用於記事的工具)中,教授發現瑪雅人使用了一個一年有365天的叫做Haab的歷法。這 個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,它只有5天,用0到4表示。瑪雅人認為這個日期最少的月份是不吉利 的,在這個月法庭不開庭,人們不從事交易,甚至沒有人打掃屋中的地板。

因為宗教的原因,瑪雅人還使用了另一個歷法,在這個歷法中年被稱為Tzolkin(holly年),一年被分成13個不同的時期,每個時期有20天,每一 天用一個數字和一個單詞相組合的形式來表示。使用的數字是1~13,使用的單詞共有20個,它們分別是:imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau。注意:年中的每一天都有著明確唯一的描述,比如,在一年的開始,日期如下描述: 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 ……也就是說數字和單詞各自獨立循環使用。

Haab歷和Tzolkin歷中的年都用數字0,1,……表示,數字0表示世界的開始。所以第一天被表示成:
Haab: 0. pop 0
Tzolkin: 1 imix 0
請幫助M.A. Ya教授寫一個程序可以把Haab歷轉化成Tzolkin歷。
輸入
Haab歷中的數據由如下的方式表示:
日期. 月份 年數

輸入中的第一行表示要轉化的Haab歷日期的數據量。下面的每一行表示一個日期,年數小於5000。
輸出
Tzolkin歷中的數據由如下的方式表示:
天數字 天名稱 年數

第一行表示輸出的日期數量。下面的每一行表示一個輸入數據中對應的Tzolkin歷中的日期。
樣例輸入
3
10. zac 0
0. pop 0
10. zac 1995
樣例輸出
3
3 chuen 0
1 imix 0
9 cimi 2801

3.代碼:

 #include <iostream>
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
 
  HAAB_MONTH_NUM 19
  HAAB_DAYS_OF_YEAR 365
  HADD_NORMAL_DAYS_OF_MONTH 20
 
 
  HOLLY_DAY_NAME_NUM 20
  HOLLY_DAY_NUM_NUM 13
 
   
  haad_months[HAAB_MONTH_NUM][] = {, , , , , , , , , , , , , , , , , ,};
  hadd_days_of_month[HAAB_MONTH_NUM] = {,,,,,,,,,,,,,,,,,, 
  holly_day_names[HOLLY_DAY_NAME_NUM][] = {, , , , , , , , , , , , , , , , , , ,  
 
            cin>>     cout<<n<<     
           month[               (n--          scanf(,&day,month,&         
         
         m_days =          m_days += HAAB_DAYS_OF_YEAR *         
         ( i = ; i < HAAB_MONTH_NUM; i++              (!                  m_days += i *                            
         m_days +=         
         year1 = m_days / (HOLLY_DAY_NAME_NUM *         
         day_num = m_days %         day_name = m_days %         cout<<(day_num+)<< <<holly_day_names[day_name]<< <<year1<<         
        }

4.思路:

(1)題目描述很復雜,需要小心

(2)先計算經過了多少天,然後在求holly歷

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved