天干地支(Java)

Posted m0_59519985

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了天干地支(Java)相关的知识,希望对你有一定的参考价值。

题目描述

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

天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。

地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。

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

20202020 年是庚子年。

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

每过 6060 年,天干会循环 66 轮,地支会循环 55 轮,所以天干地支纪年每 6060 年轮回一次。例如 19001900 年,19601960 年,20202020 年都是庚子年。

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

输入描述

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

其中有 ,输入的公元年份为不超过 99999999 的正整数。

输出描述

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

输入输出样例

示例

输入

2020

输出

gengzi

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main 
    public static void main(String[] args) 
        Scanner scan = new Scanner(System.in);
     //在此输入您的代码...
     int y=scan.nextInt();
     scan.close();
     String str = "jia,yi,bing,ding,wu,ji,geng,xin,ren,gui";
     String[] t = str.split(",");
     String s="zi,chou,yin,mao,chen,si,wu,wei,shen,you,xu,hai";
     String[] d=s.split(",");
     int x=y%60;
     int i=(x+6)%10;
     int j=(x+8)%12;
     System.out.println(t[i]+d[j]);
    

java 蓝桥杯 天干地支

天干地支

题目描述
古代中国使用天干地支来记录当前的年份。
天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。
地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。

将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。
2020年是庚子年。每过一年,天干和地支都会移动到下一个。例如 2021年是辛丑年。
每过 60 年,天干会循环 6 轮,地支会循环 5 轮,所以天干地支纪年每 60 年轮回一次。例如 1900 年,1960 年,2020 年都是庚子年。
给定一个公元纪年的年份,请输出这一年的天干地支年份。

输入描述
输入一行包含一个正整数,表示公元年份。其中有 ,输入的公元年份为不超过 9999 的正整数。
输出描述
输入一行包含一个正整数,表示公元年份。

样例输入

2020

样例输出

gengzi

思路分析
遇到这种题不要慌,想都不用想首先要做的就是把天干地支用数组保存起来,这个题既可以套公式也可以暴力枚举,我这里是枚举🤣,不要问为什么,问就是我太暴力了!
我们只需要用脚指头想一想,用计算器算一算,就可以把公园1年的天干地支年份推算出是(辛酉)年,用变量保存(辛酉)在数组中的下标,在这里下标分别是 7和9 再然后for循环推算就行了,详情见代码及注释

import java.util.Scanner;

public class 天干地支 {
	//天干地支
	static String[]tg= {"jia","yi","bing","ding","wu","ji","geng","xin","ren","gui"};
	static String[]dz= {"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
	static int itg=7;//辛所在数组中的下标
	static int idz=9;//酉所在数组中的下标
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		//for推算 每过1年下标++
		for (int i =1; i <n; i++) {
			itg++;
			idz++;
			//天干下标等于10时越界,下标重置为0
			if(itg==10)
				itg=0;
			//地址下标等于12时越界,下标重置为0
			if(idz==12)
				idz=0;
		}
		//最后按照下标输出即可
		System.out.println(tg[itg]+dz[idz]);
	}
}

以上是关于天干地支(Java)的主要内容,如果未能解决你的问题,请参考以下文章

天干地支(Java)

2020年第十一届蓝桥杯 - 国赛 - Java大学C组 - F.天干地支

2020年第十一届蓝桥杯 - 国赛 - Java大学C组 - F.天干地支

天干地支

蓝桥杯真题天干地支

天干地支