POJ1008マヤ暦

タイトル説明

ここに画像の説明を挿入
この質問の難しさはそれほど大きくありません、それはただの日付変換です。私はずっと前にこの質問をしました。

1.最初に、入力した日付を日付の開始からの日数に変換します。日付=年365+月20+日

2.日付に従って、ツォルキンカレンダー形式の年、月、日を検索します

     year = date/260;
     数字=date%13+1; (加1是因为数字从1开始)
     天名字下标=date%20;(20个天名字的下标从0到19,根据计算出的天名字下标就可以得到相应的天名字)
#include <iostream>
#include <string>
using namespace std;

string Month[] = {
    
     "pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet" };
string Cycle[] = {
    
     "imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau" };

int main(){
    
    
	int n;
	cin>>n;
	float day;
	string month;
	int mm;
	int year;
	int date;
	int i;
	cout<<n<<endl;
	while(n--){
    
    
		cin>>day>>month>>year;
		for(i=0;i<19;i++){
    
    
			if(month==Month[i])
			break;
		}
		date=365*year+20*i+day;
		year=date/260;
		mm=date%13+1;
		day=date%20;
		cout<<mm<<" "<<Cycle[(int)day]<<" "<<year<<endl;
	}
}

おすすめ

転載: blog.csdn.net/qaqaqa666/article/details/112856961