现在我们知道了 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"的提前和上面的思路一样。