Poj_1008--Maya Calendar

迅投miniQMT量化交易之【网格交易】的实现(25)——写在最后 和大家一起分享如何使用miniQMT实现我们自己的网格交易系统。如果您对量化交易感兴趣,欢迎一起交流。 阅读详情

一、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历。

二、问题分析

       这个问题我觉得没什么大的问题,就是要注意一下小的细节以及一些特殊情况的考虑。大致上,我们要把Haab历转换为天数,再把天数转换为Tzolkin历。

  1. 怎样去除输入数字后面的点号?
  2. 怎样把输入的字母型的月份转换为数字型?
  3. 怎样计算天数差?
  4. 怎样计算输出的年数、天数字?
  5. 怎样转换天名称?

三、问题解决

  1. 在读取第一个日期的时候,要用字符串存放,然后用replace方法去除“.”,再调用Integer.parseInt(),把字符串解析为整形。

                 String s=cin.next().replace(".", "");
                 int day=Integer.parseInt(s.trim());
  2. 没什么好办法,只能用if-else语句暴力解决,逐个判断输出对应数字。注意数字是从1还是还是从0开始,这与后面的计算有关。
  3. 计算天数差时要注意由于haab历的天数用0~19表示,所以真正的天数要在输入的基础上加1.而月份如果转换的时候用1~19则月份要减1。年数从0开始,不需要变 。   int days=day+1+(month-1)*20+year*365;
  4. 计算输出的时候就要注意了,如果天数差是260的整数倍,则年数减1.而在求天数字时,如果天数是13的倍数,则天数就为13。
  5. 天名称就用年内天数与20取余,再用if--else把数字转换为字符型的表示形式。
    import java.util.Scanner;
    
    public class Main {
    	public static int changeMonths(String str){
    		if(str.equals("pop"))
    			return 1;
    		else if(str.equals("no"))
    			return 2;
    		else if(str.equals("zip"))
    			return 3;
    		else if(str.equals("zotz"))
    			return 4;
    		else if(str.equals("tzec"))
    			return 5;
    		else if(str.equals("xul"))
    			return 6;
    		else if(str.equals("yoxkin"))
    			return 7;
    		else if(str.equals("mol"))
    			return 8;
    		else if(str.equals("chen"))
    			return 9;
    		else if(str.equals("yax"))
    			return 10;
    		else if(str.equals("zac"))
    			return 11;
    		else if(str.equals("ceh"))
    			return 12;
    		else if(str.equals("mac"))
    			return 13;
    		else if(str.equals("kankin"))
    			return 14;
    		else if(str.equals("muan"))
    			return 15;
    		else if(str.equals("pax"))
    			return 16;
    		else if(str.equals("koyab"))
    			return 17;
    		else if(str.equals("cumhu"))
    			return 18;
    		else if(str.equals("uayet"))
    			return 19;
    		return -1;
    	}
    	public static String changeDays(int i){
    		if(i == 1){
    			return "imix";
    		}else if(i == 2){
    			return "ik";
    		}else if(i == 3){
    			return "akbal";
    		}else if(i == 4){
    			return "kan";
    		}else if(i == 5){
    			return "chicchan";
    		}else if(i == 6){
    			return "cimi";
    		}else if(i == 7){
    			return "manik";
    		}else if(i == 8){
    			return "lamat";
    		}else if(i == 9){
    			return "muluk";
    		}else if(i == 10){
    			return "ok";
    		}else if(i == 11){
    			return "chuen";
    		}else if(i == 12){
    			return "eb";
    		}else if(i == 13){
    			return "ben";
    		}else if(i == 14){
    			return "ix";
    		}else if(i == 15){
    			return "mem";
    		}else if(i == 16){
    			return "cib";
    		}else if(i == 17){
    			return "caban";
    		}else if(i == 18){
    			return "eznab";
    		}else if(i == 19){
    			return "canac";
    		}else {
    			return "ahau";
    		}
    	}
    	public static void main(String[] args) {
    		Scanner cin=new Scanner(System.in);
    		int times=cin.nextInt();
    		System.out.println(times);
    		for(int i=0;i<times;i++){
    			String s=cin.next().replace(".", "");
    			int day=Integer.parseInt(s.trim());
    			int month=changeMonths(cin.next());
    			int year=cin.nextInt();
    			int days=day+1+(month-1)*20+year*365;
    			if(days % 260==0){
    				year=days/260-1;
    			}else
    				year=days/260;
    			day=days % 260;
    			int num;
    			if(day % 13 ==0)
    				num=13;
    			else
    				num=day % 13;
    			int c=day%20;
    			System.out.println(num+" "+changeDays(c)+" "+year);
    		}
    	}
    }
    


   

Python爬虫实战:抓取统计数据并生成年度对比图表详解 国家统计局网站(静态HTML页面Excel文件JSON接口(部分新版API)我们将重点演示从统计公报页面抓取数据,结合解析Excel文件,实现多种数据格式爬取处理。本文从零开始搭建了一个爬取国家统计数据并制作年度对比图表的完整流程。读者可以根据实际需求调整爬取目标,丰富数据分析维度,甚至结合机器学习模型预测未来趋势。欢迎你在评论区留言分享你的爬虫实践,或提出改进建议! 阅读详情

相关推荐

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

POJ 1008 Maya Calendar [解题报告] Java

http://www.acmerblog.com/POJ-1008-Maya-Calendar-blog-217.html

expleeve 634

告别交越失真:手把手教你设计高性能互补输出级电路(LTspice实测)

本文深入剖析音频放大器中常见的交越失真问题,并提供基于LTspice仿真的实战解决方案。通过对比二极管偏置、Vbe倍增器和集成运放驱动三种经典方案,手把手指导设计高性能互补输出级电路,涵盖原理分析、仿真验证及实物调试要点,助力消除音频失真,提升音质。

weixin_29190573的博客 552

POJ 百练 1008 Maya Calendar

具体来说,可以想象一个日期列表,用作两种历法转换的桥梁,也可视之为”通用历法。当然,对于月份,首先需要根据月份的name计算出月份的系数,建立一个字典,以。最后需要考虑年的系数或者说索引,这一历法一年有260。历法版的日期,这个版本的日期可以从三个视角来看:第一个视角是1-13。的循环,这一循环是以二十天为周期的循环,所以建立一个字典,键0-19。首先要考虑的是如何将Haab历法版的日期转换为。天,这个列表的每一位置索引对应的元素可以是。历法下的日期,但是想说一句,别忘了。历法版的日期,也可以是。

m0_62504307的博客 972

基于YOLOv5的隧道衬砌缺陷智能检测系统

计算机视觉在工程检测领域正发挥越来越重要的作用,特别是目标检测技术通过深度学习算法实现了对复杂场景的智能分析。YOLOv5作为当前主流的目标检测框架,通过改进网络结构和训练策略,可以显著提升检测精度和效率。在隧道工程领域,结合通道注意力机制和多尺度特征融合技术,能够有效解决衬砌缺陷识别中的小目标检测难题。这种AI检测系统相比传统人工判读地质雷达图像,不仅将效率提升20倍,还能将识别准确率提高到92.3%,特别适用于3cm以上结构缺陷的自动化检测。系统通过深度可分离卷积等优化,实现了模型轻量化,便于在边缘计算

weixin_29064103的博客 326

二次规划问题(qp)和序列二次规划问题(sqp)的简单理解

当二次规划的约束为非线性约束时,通常会采用sqp进行求解,用连续求解qp的方法来得到非线性约束条件下的最优解,上述的qpoases和osqp均无法直接求解非线性约束问题,所以如果使用这两个库的话,注意,sqp是结果,而不是原因,只有在非线性约束的情况下才会考虑sqp求解,如果问题本身就是线性约束,则直接用qp解就行。对于工程师而言,我们在编写代码的时候,并不关心二次规划问题的求解细节,所以一般是把二次规划问题建立好后,直接调用三方库进行求解。因为约束为非线性约束,所以先将约束进行线性化,约束原方程为。

zmhzmhzm的博客 1万+

【POJ】1008 Maya Calendar

Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 49534   Accepted: 15194 Description During his last sabbatical, professor M. A. Ya made a sur

Manjushri的知识库 780

太速科技-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡

当多块盘并行工作时,存储阵列读写带宽成指数增长,2块盘则≥4GB/s,4块盘则≥8GB/s,以此类推。存储阵列的存储容量由单盘配置决定,目前单块NVME存储盘存储容量可选择512GB、1TB、2TB、4TB、8TB、16TB。硬盘管理通过文件系统,FPGA的PCIeX4与 6U VPX主板互联,操作系统直接映射管理硬盘,也可以通过前面板QSFP+ 光纤导出给其他服务器设备。本方案优势就是集中的进行采集,存储,计算一体化,降低硬件成本、功耗,减小设备体积、重量。信号处理,无线电通信领域。

Orihard_的博客 678

POJ 1008 Maya Calendar

题目:http://poj.org/problem?id=1008    玛雅人历法的一道题。    不愧是POJ,看上去的一道水题都能这么恶心...这题WA了好多次    最早是漏了uayet 这个月份    然后是一年的最后一天当成了下一年    下面这组数据:    输入:4. uayet 259 输出:13 ahau 364    只要过了这组数据就没问题了... #i...

weixin_34348111的博客 237

uniapp监听扫码枪键盘事件|无输入框式监听

一般的扫码枪通过USB或蓝牙连接手机或电脑,充当的是一个外接设备。当扫码后,扫码枪会自动识别内容,然后向连接的电脑或手机发送键盘事件keydown或keyup。

tcy9099的专栏 9748

【嵌入式 – GD32开发实战指南(ARM版本)】第1部分 基础篇 - 第1章 开发环境搭建

开发环境: MDK:Keil 5.30 MCU:GD32F207IK 1.1 GD32F207I-EVAL开发板简介 笔者使用的开发板是兆易创新设计的GD32F207I-EVAL开发板。 GD32F207I-EVAL开发板使用 GD32F207IK作为主控制器,主频120MHz、集成3MB Flash、256KB SRAM、通用定时器*10、Adv. TM*2、Basic TM*2、系统时钟*1、看门狗*2、RTC*1、USART*4、UART*4、I2C*3、SPI*3、I2S*1、SDIO*1、CAN

不问归期的博客 9986

POJ1008-Maya Calendar

http://poj.org/problem?id=1008 奇葩的名字输入蛋疼。。。 #include<stdio.h> #include<string.h> char *haabm[]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","k...

weixin_30911809的博客 97

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测 目录时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测基本介绍ARIMAXVARVARMAVARMAXSESHWES参考资料 基本介绍 本文介绍ARIMAX、VAR、VARMA和VARMAX基本概念及其Python程序设计。 ARIMAX 具有外源回归量的自回归整合移动平均值(ARIMAX)是 ARIMA 模型的扩展,其还包括外生变量的建模。 外生变量也称为协变量,可以被认为是并行输入序列,其在与

前程算法屋的博客 6688

[POJ][1008]Maya Calendar

Description During his last sabbatical, professor M. A. Ya made a surprising discovery about the old Maya calendar. From an old knotted message, professor discovered that the Maya civilization used

软件工程学森 1486

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

POJ 1008.Maya Calendar

题目:http://poj.org/problem?id=1008 AC代码(C++): #include #include #include #include using namespace std; int main(){ int n; int* m; cin>>n; m = new int[n]; for(int i = 0; i n; i++){

njyexiong的博客 391

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

poj1008 Maya Calendar

Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 72431   Accepted: 22294 Description During his last sabbatical, professor M. A. Ya made a surpr

明天会更好 442

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

poj_1008_Maya Calendar_解题报告

题目出处 题意:玛雅人有两种历法,题目要求从键盘输入一中历法,通过程序转换成另一种历法 解法:模拟 思路:先通过输入求出haab历法的总天数,再对应holly历法进行转换就行了 代码(C++): /* 308K 0MS */ #include #include #include using namespace std; typedef struct { float da

学无止境 1242

poj 1008 Maya Calendar

Description During his last sabbatical, professor M. A. Ya made a surprising discovery about the old Maya calendar. From an old knotted message, professor discovered that the Maya civilization used a ...

qq_43734686的博客 182

POJ1008 Maya Calendar

题目链接:http://poj.org/problem?id=1008 题目分析: 通过输入的Haab历日期,转化成Tzolkin历日期。 我将Haab历中的月份和holly年分别存入了二维数组中。在输入数据Haab历中的月份可以使用strcmp()函数来与二维数组值进行比较,转化。 要注意年月日的起始日期,有的是以0开始的。 源代码: /*玛雅历*/ #include

Hugo的编程学习记录 939
上一篇: Poj 1006 生理周期(中国剩余定理)
下一篇: Poj1012_Joseph
TaiSung
博客等级 码龄15年 49粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值