玛雅日历转换

news/2024/11/28 5:29:57/
玛雅历

lHaab日历:拥有19个月,在开始的18个月,一个月有20天,月份的名字分别是pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu. 日期用0到19表示,最后一个月uayet,只有5天。
lTzolkin(holly年)历,一年被分成13个不同时期,每个时期有20天,每一天用一个数字(1~13)和一个单词(imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau)共20个。数字和单词各自循环使用。
l编程将Haab日历转化成Tzolkin历。

问题描述

输入数据
Haab历中的数据由如下的方式表示:
   日期. 月份年数
第一行表示要转化的Haab 历的数据量。下面的每一行表示一个日期,年数小于5000。
输出要求
Tzolkin 历中的数据由如下的方式表示:
   天数字天名称年数
第一行表示需要转化的Haab 历的数据量。下面的每一行表示一个日期。

Haab历每年365天,19个月用0~18 表示。前18个月20天,第19个月有5天,19个月的名字用不同字串表示,日期从0开始。通过月份*20+日期+1计算某个月的某一天是当年的第几天。
Tzolkin历一年有260天,每个日期由数字和字符串组成。数字从1~13,有20个不同的字符串,两个部分彼此独立。对于一年中某一天,可分别求出数字和字符串部分,然后组合。
解题思路:首先计算Haab历表示的日期是世界开始后的第几天(假设是k),然后用k除以260得到Tzolkin历的年份,再用k对260取模得到m,用m分别对13和20取模得到d和s,d和Tzolkin历中第s个字符串的组合就是要求的日期。
l 注意:如果把世界的第1天用0表示,第260天用259表示,则用k除以260得到Tzolkin历的年份,m对13取模后得到0到12的值,这个值要加1才能用于表示Tzolkin历的日期,同时m对20取模后得到0~19的数值,分别表示取20个字符串中的一个。

#include <stdio.h>
#include <string.h>
#define NAMELEN   10
char month1[19][NAMELEN] ={"pop","no","zip","zotz","tzec","xul","yoxkin","mol", "chen", "yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};// Haab历月份
char month2[20][NAMELEN] ={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk", "ok", "chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};// Tzolkin历
int main( )
{int nCases, i, m;scanf("%d", &nCases);printf("%d\n", nCases);for (i = 0; i < nCases; i++){int day, year, dates;char month[NAMELEN];scanf("%d. %s %d", &day, month, &year);for(m = 0; m < 19; m++)if (!strcmp(month1[m], month)) break;dates = year*365 + m*20 + day;printf("%d %s %d\n",1+dates%13, month2[dates%20],dates/260);}return 0;
}



















http://www.ppmy.cn/news/190611.html

相关文章

07:玛雅历

原文第二次修改版 预计阅读时间&#xff1a;5分钟 修改说明 上次虽然做过这道题&#xff0c;但做第二遍时又卡住了。我从两次代码的对比中找出并总结出了一些新的内容。 原题 描述 上周末&#xff0c;M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳&#xf…

Poj 1008 - 玛雅历

1. 问题详情 &#xff1a;点击查看 2.题目解析&#xff1a; 题目给出玛雅的两种历法&#xff0c;要求我们将第一种历法转换成第二种历法第一种历法&#xff1a;每年365天&#xff0c;分19月&#xff0c;前18月都为20天第二种历法&#xff1a;每年有20月&#xff0c;每月13天&a…

MokaPeople 上线 300 天:主打管理者视角和全员体验

当前&#xff0c;我们是身处的时代已从 VUCA 向 BANI 转变&#xff0c;在政策、经济和技术等多方面因素的驱动下&#xff0c;数字化转型已成为企业发展的必然趋势。 尤其在当下对于人才环境中的竞争态势也不得不迫使 HR 转型也进入了关键性的时刻。 6 月 2 日&#xff0c;国内…

【企业化架构部署】Nginx常见问题(一)

文章目录 一、Nginx 和 Apache 的区别二、Nginx 的最大并发能力怎么看&#xff1f;三、查看 Nginx 当前并发连接数量方法一方法二 四、Nginx 的root和alias目录的区别root&#xff08;根目录&#xff09;alias&#xff08;虚拟目录、别名目录&#xff09; 五、Nginx 的访问控制…

显示器选购参考天梯

显示器选购参考天梯 显示器的综合打分天梯图 个人学习用途博客 部分内容摘抄自网络

电脑使用说明书

电脑使用说明书 史上第二幽默的一本电脑书&#xff0c;史上第二有用的一本电脑书&#xff0c;每一个有电脑的人都应该有一本《电脑使用说明书》&#xff01;2008年度IT图书最佳策划编辑奖获得者、当当网计算机类五星畅销榜图书《大话设计模式》策划编辑、Flash经典畅销图书《Fl…

android 投屏 app 三星,两种支持三星Note10投屏到电脑的方法推荐

北京时间8月8日,三星在美国纽约召开发布会,发布了三星下半年的旗舰手机Galaxy Note 10系列。 三星Note10系列此次采用了后置4摄设计,在最新的DxO拍照评分中,Note 10+获得了113分的总评分,超过了华为P30 PRO,跃居手机拍照排行榜第一位。 当我们使用三星Note 10强大的拍照功…

2020年6月编程语言排行榜:C语言蝉联榜单第一

IOBE公布了6月份编程语言排行榜。 C语言蝉联榜单第一&#xff0c;随后分别是Java、Python、C、C#。前20名排行如下&#xff1a; 5月份的时候&#xff0c;C就已经超越Java了&#xff0c;登上第一的宝座&#xff0c;为了重回第一&#xff0c;C语言整整花了5年的时间&#xff0c…