100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【蓝桥杯】历届真题 天干地支(决赛)Java

【蓝桥杯】历届真题 天干地支(决赛)Java

时间:2020-03-13 15:54:11

相关推荐

【蓝桥杯】历届真题 天干地支(决赛)Java

资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

古代中国使用天干地支来记录当前的年份。

天干一共有十个,分别为:甲(jia)、乙(yi)、丙(bing)、丁 (ding)、戊( wi)、己(j)、庚(geng)、辛(xin)、王 (ren)、癸(gui)。

地支一共有十二个,分别为:子(z)、丑 (chou)、寅( yin)、卯(mao)、辰(chen)、已(si)、午 ( wü)、未( wei)、申 (shen)、西( you)、戌(xt)、亥(hai)。

将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。是庚子年。

每过一年,天干和地支都会移动到下一个。例如是辛丑年。

每过60年,天干会循环6轮,地支会循环5轮,所以天干地支纪年每60年轮回一次。例如1900年,1960年,都是庚子年。

给定一个公元纪年的年份,请输出这一年的天干地支年份。

输入格式

输入一行包含一个正整数,表示公元年份。

输出格式

输出一个拼音,表示天干地支的年份,天干和地支都用小写拼音表示(不表示声调),之间不要加入任何多余的字符。

样例输入

样例输出

gengzi

评测用例规模与约定

对于所有评测用例,输入的公元年份为不超过9999的正整数。

【思路与分析】

该题没有多少弯弯绕绕,基本上第一眼看过去就有思路。我的两个解题思路分别为:

1. 直接通过题中所给的所代表的天干地支纪年法作为基准值,在该基准上进行求解。

2. 通过题中所给的的天干地支来求出公元1年,也就是公元元年所代表的天干地支纪年法(经计算为:xinyou)而后将公元元年作为基准值求解。

两个思路大差不差,无非是在基准值的选取上略有区别。

废话不多说,展示。

代码

import java.util.*;public class Main{public static void main(String[] args){//获取输入Scanner sc = new Scanner(System.in);int year = sc.nextInt();//声明一个数组,分别存储天干和地支的值String[] tianGan = {"jia", "yi", "bing", "ding", "wu", "ji", "geng", "xin", "ren", "gui"};String[] diZhi = {"zi", "chou", "yin", "mao", "chen", "si", "wu", "wei", "shen", "you", "xu", "hai"};//因其天干地支可看作60年循环一次//对年份进行除余操作,方便后续计算year = year % 60;//天干循环一次int tian = year % 10;//地支循环一次int di = year % 12;//因公元纪年法从 1 开始,因此公元元年的天干地支:xinyou//在天干[7]地支[9]的下标都要-1,以进行匹配System.out.println(tianGan[((6+tian)%10)]+diZhi[((8+di)%12)]);}}

总结

此题还是较为简单的,没有涉及到复杂的数据结构和算法,多试几遍还是很好解出来的。需要注意的点是公元纪年法从1开始,而不是0

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。