蓝桥杯真题--天干地支(Java实现)

 

现在我们知道了 2020 年是庚子年,我们这里既可以是除留余数来判断 N 年是什么天干和什么地支,我们也可以直接暴力使用循环做,这样的话 9999 的复杂度也跑不了多久。实现起来很简单,我们讲这个比较难的。

我们先判断 0000 年的天干 和地支 。

  • 根据题意 0000 年 距 2020 年 早了 2020 年 。
  • 已知天干 有 10 个, 那么 2020%10=0 剩下的都是整个轮回,即到了 0000 年 是庚 X 年,即天干是 庚 。

再按照这个方法算地支 是 2020%12=4 及还要向前推四年 地支为申。

即 0000 年为庚申年,那么根据模拟法可知。

N%10=0 时 天干为庚

N%10=1 时 天干为辛

...

以此类推

N%12=0 时 地支为申

N%12=1 时 地支为酉 ...

以此类推:

那我们很容易就能实现判断代码的编写:

package easy;

import java.util.Scanner;

public class 天干地支 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		String[] tianGan = {"geng","xin","ren","gui","jia","yi","bing","ding","wu","ji"};
		String[] dizhi = {"shen","you","xu","hai","zi","chou","yin","mao","chen","si","wu","wei"};
		
		System.out.println(tianGan[n%10]+""+dizhi[n%12]);
	}
}

上述代码中把 "geng","xin","ren","gui",提到了数组的前面,是因为 0000 年的天干是 "geng",所以要把"geng"以及"geng"后面的都放到数组的前面。"shen","you","xu","hai"的提前和上面的思路一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值