`
joe_zxy
  • 浏览: 43600 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

POJ ACM习题【No.1008】

    博客分类:
  • ACM
阅读更多
玛雅历
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 28893 Accepted: 8760

Description

上周末,M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做Haab的历法。这 个Haab历法拥有19个月,在开始的18个月,一个月有20天,月份的名字分别是pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu。这些月份中的日期用0到19表示。Haab历的最后一个月叫做uayet,它只有5天,用0到4表示。玛雅人认为这个日期最少的月份是不吉利 的,在这个月法庭不开庭,人们不从事交易,甚至没有人打扫屋中的地板。

因为宗教的原因,玛雅人还使用了另一个历法,在这个历法中年被称为Tzolkin(holly年),一年被分成13个不同的时期,每个时期有20天,每一 天用一个数字和一个单词相组合的形式来表示。使用的数字是1~13,使用的单词共有20个,它们分别是:imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau。注意:年中的每一天都有着明确唯一的描述,比如,在一年的开始,日期如下描述: 1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, ,8 imix, 9 ik, 10 akbal ……也就是说数字和单词各自独立循环使用。

Haab历和Tzolkin历中的年都用数字0,1,……表示,数字0表示世界的开始。所以第一天被表示成:
Haab: 0. pop 0
Tzolkin: 1 imix 0
请帮助M.A. Ya教授写一个程序可以把Haab历转化成Tzolkin历。

Input

Haab历中的数据由如下的方式表示:
日期. 月份 年数

输入中的第一行表示要转化的Haab历日期的数据量。下面的每一行表示一个日期,年数小于5000。

Output

Tzolkin历中的数据由如下的方式表示:
天数字 天名称 年数

第一行表示输出的日期数量。下面的每一行表示一个输入数据中对应的Tzolkin历中的日期。

Sample Input

3
10. zac 0
0. pop 0
10. zac 1995

Sample Output

3
3 chuen 0
1 imix 0
9 cimi 2801

 

需要注意的有几点:

T历换年的区间

T历换月的区间

T历换日的区间

H历从0开始,T历从1开始记日

H历最后一月为5日

 

 

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		
		int num = Integer.valueOf(cin.nextLine()).intValue();
		String[] str;
		
		System.out.println(num);
		for(int i = 0; i < num; i++)
		{
			str = cin.nextLine().split(" ");
			int hday = Integer.valueOf(str[0].substring(0, str[0].length()-1)).intValue();
			int hmonth = convertHaab(str[1]);
			int hyear = Integer.valueOf(str[2]).intValue();
			
			int totalDay = totalDay(hyear, hmonth, hday);
			
			int tyear = getTYear(totalDay);
			int tmonth = getTMonth(totalDay);
			int tday = getTDay(totalDay);
			
			System.out.println(tday + " " + convertH(tmonth) + " " + tyear);
		}

	}
	
	private static int getTMonth(int totalDay)
	{
		int rest = 0;
		rest = totalDay % 260;
		int value = rest % 20;
		if(value == 0)
			return 20;
		return value; 
	}
	
	private static int getTDay(int totalDay)
	{
		int rest = 0;
		rest = totalDay % 260;
		int value = rest % 13;
		if(value == 0)
			return 13;
		return value;
	}

	private static int getTYear(int totalDay)
	{
		return (totalDay-1) / 260;
	}
	
	private static int totalDay(int year, int month, int day)
	{
		int totalDay = 0;
		
		totalDay += year * 365;
		totalDay += (month-1) * 20;
		totalDay += day + 1;

		return totalDay;
	}
	
	private static int convertHaab(String str)
	{
		int value = 0;
		if(str.equals("pop"))
			value = 1;
		else if(str.equals("no"))
			value = 2;
		else if(str.equals("zip"))
			value = 3;
		else if(str.equals("zotz"))
			value = 4;
		else if(str.equals("tzec"))
			value = 5;
		else if(str.equals("xul"))
			value = 6;
		else if(str.equals("yoxkin"))
			value = 7;
		else if(str.equals("mol"))
			value = 8;
		else if(str.equals("chen"))
			value = 9;
		else if(str.equals("yax"))
			value = 10;
		else if(str.equals("zac"))
			value = 11;
		else if(str.equals("ceh"))
			value = 12;
		else if(str.equals("mac"))
			value = 13;
		else if(str.equals("kankin"))
			value = 14;
		else if(str.equals("muan"))
			value = 15;
		else if(str.equals("pax"))
			value = 16;
		else if(str.equals("koyab"))
			value = 17;
		else if(str.equals("cumhu"))
			value = 18;	
		else
			value = 19;
		return value;
	}
	
	private static String convertH(int month)
	{
		String str = new String();
		
		if(month == 1)
			str = "imix";
		if(month == 2)
			str = "ik";
		if(month == 3)
			str = "akbal";
		if(month == 4)
			str = "kan";
		if(month == 5)
			str = "chicchan";
		if(month == 6)
			str = "cimi";
		if(month == 7)
			str = "manik";
		if(month == 8)
			str = "lamat";
		if(month == 9)
			str = "muluk";
		if(month == 10)
			str = "ok";
		if(month == 11)
			str = "chuen";
		if(month == 12)
			str = "eb";
		if(month == 13)
			str = "ben";
		if(month == 14)
			str = "ix";
		if(month == 15)
			str = "mem";
		if(month == 16)
			str = "cib";
		if(month == 17)
			str = "caban";
		if(month == 18)
			str = "eznab";
		if(month == 19)
			str = "canac";
		if(month == 20)
			str = "ahau";

		return str;
	}

}
 
分享到:
评论

相关推荐

    1235012013杨铭.zip

    1235012013杨铭.zip

    vue项目实战Vue实战项目篇源码.zip

    vue项目实战Vue实战项目篇源码.zip Vue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zi

    NX二次开发uc4400 函数介绍

    NX二次开发uc4400 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业人士,还是希望提高工作效率的普通用户,NX 二次开发 Ufun 都可以帮助您实现更高效的工作流程。函数覆盖了 NX 软件的各个方面,包括但不限于建模、装配、制图、编程、仿真等。这些 API 函数可以帮助用户轻松地实现自动化、定制化和扩展 NX 软件的功能。例如,用户可以通过 Ufun 编写脚本,自动化完成重复性的设计任务,提高设计效率;或者开发定制化的功能,满足特定的业务需求。语法简单易懂,易于学习和使用。用户可以快速上手并开发出符合自己需求的 NX 功能。本资源内容 提供了丰富的中英文帮助文档,可以帮助用户快速了解和使用 Ufun 的功能。用户可以通过资源中的提示,学习如何使用 Ufun 的 API 函数,以及如何实现特定的功能。

    基于Java的二手书交易微信小程序源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    Highlight Plus 2D 3.5.2

    Highlight Plus 2D为2D或3D场景中的任何精灵添加轮廓、发光、透明、叠加、阴影和缩放效果。 Highlight Plus 2D的设计考虑了平台兼容性和性能: 兼容Mac、Windows、安卓、iOS、WebGL。 兼容内置、URP(正向和2D渲染器)和HDRP管道。 兼容VR(多通道和单通道)。 移动设备上运行速度超快。 ** 视觉特征 ** - 发光颜色、宽度、alpha、动画速度、抖动、多色。 - 轮廓颜色、阿尔法通道和宽度。 - 叠加颜色、阿尔法通道和动画速度。 - 透明效果强度、色调和alpha。 - 击打/闪光效果,具有自定义颜色、强度和淡出持续时间。 - 悬停时缩放。 - 2D和3D阴影。 **其他功能** - 使用带有SpriteRenderer组件的单个和基于图集的精灵。 - 适用于四边形游戏对象(具有纹理的四边形)。 - 与基于Spine的动画网格渲染器一起使用。 - 支持动画(SpriteSkin),变换和自定义轴心。 - 预览效果在编辑器中(无需进入播放模式)。 - 将单个或一组子图形高亮显示为单个对象。

    基于Java的Mybatis二级缓存memcache设计源码

    Mybatis二级缓存memcache项目源码,共20个文件,全部采用Java语言编写,涉及多种文件类型如Java源代码、XML配置文件、PREFS文件、CLASSPATH文件、Git忽略文件、PROJECT文件、LICENSE文件、NOTICE文件、README文件和Markdown文档等。该项目是一个基于Java的Mybatis二级缓存memcache设计,旨在提供一个高效、稳定的二级缓存解决方案。

    安卓虚拟键盘蓝牙连接电脑操作

    安卓虚拟键盘蓝牙连接电脑操作

    基于MSP430单片机的多功能复费率电表及上位机系统设计

    针对目前国内现行电能表存在的局限性,本文研究开发了一种基于MSP430的多功能复费率电能表,该电能计量装置可以有效地监控用户消耗电能状况,实现了分时计费的功能,并且具备多种抄表方式,大大提高了电能计量装置的方便性和可靠性。帮助实现用电管理的科学化和自动化。本课题从以下几个方面进行了研究: 1.简要介绍了电能计量装置的发展和研究现况,在此基础上,论证了基于MSP430 的多功能复费率电能表研制的必要性和可行性。 2.根据系统的技术要求和条件,确定了系统的整体结构。 3.设计了以MSP430F449为核心处理器的电能表硬件结构。MSP430单片机作为数据处理核心部件和整个仪表的管理中心,整个硬件系统配置分为电能计量模块, MSP430微处理系统,通信接口,抄表模块等,完成了数据采集,电能计量,通信控制等功能。 4.介绍了上位机和下位机的系统软件设计。下位机部分的软件开发与调试作为重点,依据硬件电路的实现,以模块化的编程方法,实现数据处理和模块通信的任务。上位机主要完成用户界面,数据管理等功能。

    基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip

    【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip 基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip 基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip

    grpcio-1.42.0-cp38-cp38-macosx_10_10_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于卷积神经网络的甲状腺结节超声波图像自动分割与分类(源代码+说明文档)-机器学习精品课程设计(可以复现)

    这是2020年TN-SCUI挑战中分割任务(loU为82.54%)第一名解决方案的源代码。 这段代码可以很容易地在单目标分割任务上执行。这里,我们将整个过程分为五个步骤,以便您可以轻松复制我们的结果或在您个人自定义数据集上执行整个过程。 step0,准备环境 step1, 运行脚本[`step1_preprocessing.m 来执行预处理 step2, 运行脚[`step2_TrainAndValidate.py`] 训练和验证CNN模型 step3,运行脚本[`step3_TestOrInference.py`]在未经处理的原始图像上测试模型 step4 (可选择的), 运行脚本[`step4_Merge.py`]

    Java 插入排序代码示例

    插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要移动元素以腾出位置。 这段代码定义了一个名为InsertionSort的类,其中包含main方法和insertionSort方法。main方法初始化一个整数数组arr,调用insertionSort方法对其进行排序,并打印排序后的数组。insertionSort方法接受一个整数数组作为参数,并通过插入排序算法对其进行排序。

    anaconda安装知识领域: 数据可视化 技术关键词: Matplotlib、Seaborn、数据可视化、图表绘制

    anaconda安装知识领域: 数据可视化 技术关键词: Matplotlib、Seaborn、数据可视化、图表绘制 内容关键词: 折线图、柱状图、散点图 用途: 学习使用Python进行数据可视化和图表绘制 资源描述: Matplotlib官方文档提供了详细的Matplotlib库介绍、使用指南和示例代码,适合数据分析师和科学家使用Python进行数据可视化。

    Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar

    Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rarJava开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar

    一份不知道哪里来的第十五届国赛模拟题

    一份不知道哪里来的第十五届国赛模拟题(demo)

    srs5.0 r2版本,gb28181流媒体服务软件

    srs5.0 r2版本,gb28181流媒体服务软件

    基于python爬取新浪微博爬虫以及生成词云源码+源代码+文档说明(高分项目)

    基于python爬取新浪微博爬虫以及生成词云源码+源代码+文档说明(高分项目)本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项

    java调用科大讯飞l离线语音合成SDK

    语言合成资源描述是指对用于语音合成的数据集、模型和工具的描述。这些资源可以帮助研究人员和开发者创建更自然、更逼真的语音合成系统。以下是一些常见的语言合成资源: 数据集:包括用于训练和评估语音合成模型的音频文件、文本和标注。这些数据集通常包含不同性别、年龄和口音的说话者,以及各种语速、情感和场景的音频。 模型:包括用于生成语音的预训练模型和算法。这些模型可以是端到端的(如Tacotron、WaveNet等),也可以是基于传统的数字信号处理技术(如PSOLA、MBROLA等)。 工具和库:包括用于处理音频、文本和标注的工具,以及实现语音合成算法的库。这些工具和库可以帮助研究人员和开发者更快地开发和测试新的语音合成方法。 评估指标:包括用于衡量语音合成质量的客观和主观指标。客观指标(如MCD、WER等)可以自动计算,而主观指标(如MOS、CMOS等)。

    Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar

    Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar

    阿里云盘挂载到本地(让你的电脑容量瞬间变大!)

    CloudDrive是一款个人开发者开发的网盘挂载工具,可以将阿里云盘、115网盘、NebDAV、天翼云盘等国内网盘挂载映射到电脑本地,将网盘变成变成本地磁盘来使用。挂载成功后,网盘空间容量就会变成本地磁盘容量。网盘内容的资源也可以像本地磁盘一样复制、粘贴、删除、重命名等。 挂载教程:软件安装成功后桌面会出现一个CloudDrive的图标,点击即可打开一个类似于网站的操作页面,然后操作如右图所示即可成功挂载到本地(你会发现你C盘旁边会多出一个CloudDrive盘)

Global site tag (gtag.js) - Google Analytics