POJ 1008-Maya Calendar-模拟


#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;  
char tm[105];	
int n;
int i,j; 
int max(int a,int b) 
{return a<b?b:a;} 

map<string ,int> sb;
map<int ,string> sec; 
int deal (int day,int year)
{
	int t=year*365;
	string ss=tm;
	int month=sb[ss];
	
	t+=(month-1)*20+(day+1); 
	
	year=t/260;
	t%=260;
	month=t%20;
	if (month==0)  
	{
		if (!t)    //trick 如果t完全整除,则应该为t/260-1年的最后一天  ,而不是第t/260年的第1天 
			year--;
		month=20;
		
	}
	day=(t%13);
	if (day==0) 
		day=13; 
	printf("%d %s %d\n",day,sec[month].c_str(),year);
	return 0;
}

int main()
{
	string pop="pop";
	string no="no";
	string zip="zip";
	string zotz="zotz";
	string tzec="tzec";
	string xul="xul";
	string yoxkin="yoxkin";
	string mol="mol";
	string chen="chen";
	string yax="yax";
	string zac="zac";
	string ceh="ceh";
	string mac="mac";
	string kankin="kankin";
	string muan="muan";
	string pax="pax";
	string koyab="koyab";
	string cumhu="cumhu";  
	string uayet="uayet";  
	
	sb[pop]=1;
	sb[no]=2;
	sb[zip]=3;
	sb[zotz]=4;
	sb[tzec]=5;
	sb[xul]=6;
	sb[yoxkin]=7;
	sb[mol]=8;
	sb[chen]=9;
	sb[yax]=10;
	sb[zac]=11;
	sb[ceh]=12;
	sb[mac]=13;
	sb[kankin]=14;
	sb[muan]=15;
	sb[pax]=16;
	sb[koyab]=17;
	sb[cumhu]=18; 
	sb[uayet]=19;
	
	string imix="imix";
	string ik="ik";
	string akbal="akbal";
	string kan="kan";
	string chicchan="chicchan";
	string cimi="cimi";
	string manik="manik";
	string lamat="lamat";
	string muluk="muluk";
	string ok="ok";
	string chuen="chuen";
	string eb="eb";
	string ben="ben";
	string ix="ix";
	string mem="mem";
	string cib="cib";  
	string caban="caban";
	string eznab="eznab";
	string canac="canac";  
	string ahau ="ahau";
	
	sec[1]=imix;
	sec[2]=ik;
	sec[3]=akbal;
	sec[4]=kan;
	sec[5]=chicchan;
	sec[6]=cimi;
	sec[7]=manik;
	sec[8]=lamat;
	sec[9]=muluk;
	sec[10]=ok;
	sec[11]=chuen;
	sec[12]=eb;
	sec[13]=ben;
	sec[14]=ix; 
	sec[15]=mem;
	sec[16]=cib;
	sec[17]=caban;
	sec[18]=eznab;
	sec[19]=canac;
	sec[20]=ahau;
	
	scanf("%d",&n);
	printf("%d\n",n);
	int k;
	for (k=1;k<=n;k++)
	{
		int day,year;
		
		scanf("%d. %s %d",&day,tm,&year);
		
		deal(day,year);
		
		
	}
	
	
	
	return 0;
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值