标签:
1 1988-03-07
6574
import java.util.Scanner; /* * 1)如果第一年是闰年那么18年就有5个闰年 * 2)如果第18岁那年是闰年那么就有5个闰年 * 3)如果第一年非闰年那么18年就有4个闰年或者5个闰年 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while (t-- > 0) { String born = sc.next(); String[] borns = born.split("-"); int year = Integer.parseInt(borns[0]); int month = Integer.parseInt(borns[1]); int day = Integer.parseInt(borns[2]); int leapYear = 0; //计算有多少个闰年 for (int i = year; i <= year + 18; i++) { if(isLeapYear(i)){ leapYear++; } } //分两种情况讨论 //出生那年是是闰年 if(isLeapYear(year)){//闰年有5年,但是不一定过了第1个闰年 if(month==2&&day==29){ /*如果他的生日是闰年2月29号,此时输出-1。(因为四年一闰,18 % 4 == 2, 所以如果当前是闰年,那18岁指定没戏了)。*/ System.out.println(-1); continue; } if(month>2){//重点是有没有过2月29日 leapYear--; } } //18岁生日是闰年,非闰年出生,闰年有5年,但是不一定过了第五个闰年 if(isLeapYear(year+18)){ if(month<3&&day<29){//没有过2月29日 leapYear--; } } System.out.println(6570+leapYear);//365*18=6570 } } public static boolean isLeapYear(int year) { return year % 400 == 0 || year % 100 != 0 && year % 4 == 0; } }
标签:
原文地址:http://blog.csdn.net/hncu1306602liuqiang/article/details/46353365