蓝桥杯--第四周练习 高斯日记

[问题描述]
大数学家高斯有个好习惯:无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?
高斯出生于:1777年4月30日。

在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

高斯获得博士学位的那天日记上标着:8113

请你算出高斯获得博士学位的年月日。
提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21
 

public class LanQiao04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int m = scan.nextInt();
		String mm = null, dd = null;
		// 高斯日记
		int year = 1777 ;
		int month=4;
		int day=30;
		for(int i=1;i<m;i++) {
			day++;
			if(month==2 && ((isLeapYear(year) &&day==30 )||(!isLeapYear(year) &&day==29))){
				month=3;
				day=1;
			}
			else if(month==12&&day==32) {
				year++;
				month=1;
				day=1;
			}
			else if((month==1||month==3||month==5||month==7||month==10||month==8)&&day==32) {
				month++;
				day=1;
			}
			else if((month==4||month==6||month==9||month==11)&&day==31) {
				month++;
				day=1;
			}
		}


		if (month < 10)
			mm = "0" + month;
		else
			mm = month + "";
		if (day < 10)
			dd = "0" + day;
		else
			dd = day + "";
		System.out.println(year + "-" + mm + "-" + dd);

	}

	private static boolean isLeapYear(int i) {
		// TODO Auto-generated method stub
		if (i % 4 == 0 || (i % 100 != 0 && i % 400 == 0))
			return true;
		return false;
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_42565135/article/details/86603734