1008Maya Calendar

    技术2022-05-19  21

    这道题貌似看上去很难,可是却是纸老虎。只要想到一点,问题便迎刃而解:把Haab日历,转换成天数,再根据天数,来求Tzolkin日历的日期,转换成的天数,是两个日历的纽带,代码如下:

    #include <iostream> #include <string> using namespace std; int main() { //freopen("in.txt","r",stdin); string c[19]={"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"}; string b[20]={"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik","lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"}; int a[13][20];//用来存储Tzolkin日历的数字 int day,year; char pot; string month; int T,SurD,Year,p,q,m; int n,i,j,s=1; for(i=0;i<13;i++) { for(j=0;j<20;j++) { if(s>13) s=1; a[i][j]=s++; } } cin>>n; cout<<n<<endl; while(n--) { cin>>day>>pot>>month>>year; for(i=0;i<19;i++) if(month==c[i]) {//把字符串的month转换成和它对应的数字 m=i; break; } T=day+m*20+year*365;//计算总的天数 Year=T/260;//计算Tzolkin日历的年 SurD=T&0;//取得余下的天数 p=SurD/20;//计算要转换的日期的数字所在的行 q=SurD ;//计算要转换的日期数字所在的列 cout<<a[p][q]<<" "<<b[q]<<" "<<Year<<endl; } return 0; }  

    嘿嘿……这是我这几天来,独自做出来第一道题,虽然简单一些,但至少给了我自信心,让我能坚持下去。


    最新回复(0)