死神(日期暴力破解问题)
一天蒜头君和好友们遇到了死神,每人向死神提问了一个问题,问自己还剩余多少时间。但死神那里没有直接记录他们还剩下多少时间,记录的是他们生命结束的那天。
这就很头疼了,计算日期这么复杂的事情还是交给聪明的你吧。
下面是每个人生命结束的日期(起始时间从今天算起,今天 2017−02−23),请计算出他们一共剩下多少时间:
2901-10-19
2561-3-13
2284-5-27
2359-5-19
2944-5-15
2756-2-9
2337-12-17
2457-10-14
2716-8-14
2698-7-13
2731-9-6
2295-3-6
2553-6-16
2078-7-15
2155-1-8
2657-11-2
2864-10-17
2468-1-4
2795-1-15
2953-1-5
package 蓝桥杯2018年B组第三次模拟赛; import java.util.Scanner; public class 死神 { /** * @param args */ static int[] month_day={0,31,28,31,30,31,30,31,31,30,31,30,31};//存放每个月的天数 public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); String[] strs=new String[20]; for(int i=0;i<20;i++){ strs[i]=scan.next(); } int[] days=new int[20]; for(int i=0;i<20;i++){ days[i]=qiuDay(strs[i]); } int sum=0; for(int i=0;i<20;i++){ sum+=days[i]; } System.out.print(sum); } public static int qiuDay(String str){ String[] strs=new String[2]; strs=str.split("-"); int year=Integer.parseInt(strs[0]); int month=Integer.parseInt(strs[1]); int day=Integer.parseInt(strs[2]); int tagYear=2017; int tagMonth=2; int tagDay=23; for(int i=1;;i++){ tagDay++; if(isRunNian(tagYear)){ month_day[2]=29;//闰年二月29天 }else{ month_day[2]=28; } if(tagDay>month_day[tagMonth]){ tagDay=1; tagMonth++; } if(tagMonth>12){ tagMonth=1; tagYear++; } if(tagYear==year&&tagMonth==month&&tagDay==day){ //System.out.println(i); return i; } } } public static boolean isRunNian(int year){ if(year%400==0||(year%4==0&&year%100!=0)){ return true; } return false; } }