poj 1008 Maya Calendar

这道题目其实不难,不过总是废了好多时间,好忧桑,编程能力还是太弱小了,

遇到的问题主要是:

1.数据读入,有个'.',后来突然想到可以通过读入float解决

2.年月转换时候的+1,-1有些晕,这个需要格外注意下。


Source Code

Problem: 1008 User: zhyh2010
Memory: 240K Time: 0MS
Language: C++ Result: Accepted
  • Source Code
    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;
    
    const int H_year_length = 18 * 20 + 5;
    map<string, int> H_month_table;
    map<int,string> T_day_table;
    const int T_year_length = 13 * 20;
    
    void init()
    {
    	H_month_table["pop"] = 1;
    
    	H_month_table["no"] = 2;
    	H_month_table["zip"]= 3;
    	H_month_table["zotz"] =4;
    	H_month_table["tzec"] =5;
    	H_month_table["xul"] =6;
    	H_month_table["yoxkin"] =7;
    	H_month_table["mol"] =8;
    	H_month_table["chen"] =9;
    	H_month_table["yax"] =10;
    	H_month_table["zac"] =11;
    	H_month_table["ceh"] =12;
    	H_month_table["mac"] =13;
    	H_month_table["kankin"] =14;
    	H_month_table["muan"] =15;
    	H_month_table["pax"] =16;
    	H_month_table["koyab"] =17;
    	H_month_table["cumhu"] =18;
    	H_month_table["uayet"] =19;
    
    
    	T_day_table[1] = "imix";
    	T_day_table[2]="ik";
    	T_day_table[3]="akbal";
    	T_day_table[4]="kan";
    	T_day_table[5]="chicchan";
    	T_day_table[6]="cimi";
    	T_day_table[7]="manik";
    	T_day_table[8]="lamat";
    	T_day_table[9]="muluk";
    	T_day_table[10]="ok";
    	T_day_table[11]="chuen";
    	T_day_table[12]="eb";
    	T_day_table[13]="ben";
    	T_day_table[14]="ix";
    	T_day_table[15]="mem";
    	T_day_table[16]="cib";
    	T_day_table[17]="caban";
    	T_day_table[18]="eznab";
    	T_day_table[19]="canac";
    	T_day_table[20]="ahau";
    }
    
    int main(int argc, char ** argv)
    {
    	float H_day;
    	char H_month_s[6];
    	int H_month;
    	int H_year;
    	int T_day;
    	int T_month;
    	int T_year;
    	int num;
    	init();
    	cin >> num;
    	cout << num << endl;
    	int * pIndex = new int[num];
    	
    	for (int i = 0; i != num; ++i)
    	{
    		// encode
    		cin >> H_day >> H_month_s >> H_year;
    		if (H_month_table[H_month_s] == 19)
    		{
    			pIndex[i] = H_year*H_year_length + 360 + H_day;
    		}
    		else
    		{
    			pIndex[i] = H_year*H_year_length + (H_month_table[H_month_s] - 1) * 20 + H_day;
    		}		
    
    		// decode
    		T_year = pIndex[i] / T_year_length;
    		T_month = pIndex[i] % T_year_length % 20 + 1;
    		T_day = pIndex[i] % T_year_length % 13 + 1;
    		cout << T_day << " " << T_day_table[T_month] << " " << T_year << endl;
    
    	}
    
    	
    
    
    	return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值