本文共 1318 字,大约阅读时间需要 4 分钟。
还是水题,也是一次提交就AC了。做完后看网上的解法,都大同小异,只是字符串和数字的转换用的是数组而非map,效率上应该会高一些,毕竟map还会进行自动排序之类的与题目无关的操作。附上代码:
#include <iostream>#include <string>#include <map>#include <algorithm>using namespace std;int main(){ map<string,int> Haab; Haab["pop"]=0,Haab["no"]=1,Haab["zip"]=2,Haab["zotz"]=3,Haab["tzec"]=4,Haab["xul"]=5,Haab["yoxkin"]=6; Haab["mol"]=7,Haab["chen"]=8,Haab["yax"]=9,Haab["zac"]=10,Haab["ceh"]=11,Haab["mac"]=12,Haab["kankin"]=13; Haab["muan"]=14,Haab["pax"]=15,Haab["koyab"]=16,Haab["cumhu"]=17,Haab["uayet"]=18; map<int,string> Tzolkin; Tzolkin[0]="imix",Tzolkin[1]="ik",Tzolkin[2]="akbal",Tzolkin[3]="kan",Tzolkin[4]="chicchan",Tzolkin[5]="cimi"; Tzolkin[6]="manik",Tzolkin[7]="lamat",Tzolkin[8]="muluk",Tzolkin[9]="ok",Tzolkin[10]="chuen",Tzolkin[11]="eb"; Tzolkin[12]="ben",Tzolkin[13]="ix",Tzolkin[14]="mem",Tzolkin[15]="cib",Tzolkin[16]="caban",Tzolkin[17]="eznab"; Tzolkin[18]="canac",Tzolkin[19]="ahau"; int num,days,hdate,hmonth,hyear; int tdate,tmonth,tyear; string hspliter,shmonth,stdate; cin>>num; cout<<num<<endl; for(int ix=0;ix<num;++ix) { cin>>hdate; cin>>hspliter; cin>>shmonth; hmonth=Haab[shmonth]; cin>>hyear; days=365*hyear+20*hmonth+hdate; tyear=days/260; days=days%260; tmonth=days%13+1; tdate=days%20; stdate=Tzolkin[tdate]; cout<<tmonth<<" "<<stdate<<" "<<tyear<<endl; } return 0;}
转载地址:http://xtxli.baihongyu.com/