玛雅历法
水题,简单的转换2种历法就可以了,要注意2个历法的最小公倍数
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 string m[19]={"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu","uayet"}; 6 string d[20]={"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"}; 7 8 int summons(string hm) 9 { 10 for(int i=0;i<19;i++) 11 { 12 if(hm==m[i]) 13 { 14 return i; 15 } 16 } 17 return -1; 18 } 19 20 21 22 int main() 23 { 24 long n,i,j,k; 25 cin>>n; 26 cout<<n<<endl; 27 for(i=0;i<n;i++) 28 { 29 long hd; 30 string hm; 31 long hy; 32 cin>>hd>>hm>>hm>>hy; 33 long hm1=summons(hm); 34 long hdays=0; 35 hdays=hy*365+20*hm1+hd; 36 37 38 39 40 long y=hdays/260; 41 long days=hdays%260; 42 43 cout<<days%13+1<<" "<<d[days%20]<<" "<<y<<endl; 44 } 45 return 0; 46 }