POJ 1008 Maya Calendar

这题乍一看好像很麻烦的样子,请原谅我的英语。

花了很久看完题才知道,他让我把一个日期表示转成另一个日期表示。

然后。。。

//PKU_1008
//读入题,注意把'.'读走


#include <iostream>
#include <string>
using namespace std;

string HaabMonth[19]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax",
                             "zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};

string TzolkinDate[20]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat",
                        "muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};

int toDateNum(string s)
{
	int i=0;
	while ((i<=18)&&(s!=HaabMonth[i]))
		i++;
	return i;
}
							
int toNumOfDay(int date,string month,int year)
{
	int monthNum=toDateNum(month);
	return year*365+monthNum*20+date+1;
}

int main()
{
	int n;
	cin>>n;
	cout<<n<<endl;
	while (n--)
	{
		int  HaabDate,HaabYear,TzolkinDateNum,TzolkinYear;
		string HaabMonth,TzolkinDateName;
		char c;
		cin>>HaabDate>>c>>HaabMonth>>HaabYear;
		int numOfDay=toNumOfDay(HaabDate,HaabMonth,HaabYear);
		TzolkinYear=(numOfDay-1)/260;                                
		TzolkinDateNum=(numOfDay-1)%13+1;                      
		TzolkinDateName=TzolkinDate[(numOfDay-1)%20];            
		cout<<TzolkinDateNum<<' '<<TzolkinDateName<<' '<<TzolkinYear<<endl;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值