/* * ===================================================================================== * * Filename: main.cpp * * Description: poj 1008 * * Version: 1.0 * Created: 2012/5/6 22:28:05 * Revision: none * Compiler: gcc * * Author: Jason Damon * Organization: XD University * * ===================================================================================== */ #include <stdlib.h> #include <iostream> #include <fstream> #pragma warning (disable:4786) #include <map> #include <string> using namespace std; char HMonth[18][10]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu"}; char TMonth[20][10]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"}; int n,sum_day; map<string,int> HM; map<int,string> TM; int count_haab(int day,int month,int year) { sum_day=0; sum_day+=year*365; sum_day+=month*20; sum_day+=day; return sum_day; } void count_t() { int year,day,tem_month; string month; year=sum_day/260; sum_day=sum_day%260; tem_month=sum_day%20; day=sum_day%13+1; cout<<day<<" "<<TM[tem_month]<<" "<<year<<endl; } int main() { int i,day,year; char doc,month[10]; for(i=0; i<20; i++) { HM.insert(pair<string,int>(HMonth[i],i)); } for(i=0; i<20; i++) { TM.insert(pair<int,string>(i,TMonth[i])); } freopen("in.txt","r",stdin); scanf("%d",&n); printf("%d\n",n); for(i=0; i<n; i++) { cin>>day>>doc>>month>>year; //求总天数 if(HM.count(month)>0) //前18个月 { sum_day=count_haab(day,HM[month],year); } else { sum_day=count_haab(day,18,year); } count_t(); } return 0; }
第一题模拟题。为了校赛。加油!
题意:就是两个日历之间的转换问题。关键是对应上来就好了。我用的是STL中的map,也算是基本学会了map的操作。