如果最後的年份是閏年 且月份超過2月 就需要+1
Example: 0001/1/1數到2012/5/1 --> 數到2012年之後 由於2012為閏年 2月有29天 所以只要月份超過2月就要加上2/29那天
以下為程式碼:
import java.util.*;
public class a263
{
public static long CalculateYear(int year,int month)
{
long pass=0;
for(int i=1;i<year;i++)
{
if((i%4==0 && i%100!=0) || i%400==0)
{
pass+=366;
}
else
{
pass+=365;
}
}
if((((year)%4==0 && (year)%100!=0) || (year)%400==0) && month>2)
{
pass+=1;
}
return pass;
}
public static long CalculateMonth(int year,int month)
{
long pass=0;
for(int i=1;i<month;i++)
{
if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
{
pass+=31;
}
else if(i==4 || i==6 || i==9 || i==11)
{
pass+=30;
}
else
{
if((i%4==0 && i%100!=0) || i%400==0)
{
pass+=29;
}
else
{
pass+=28;
}
}
}
return pass;
}
public static long CalculateDay(int day)
{
return day-1;
}
public static void main(String[] args)
{
long total1,total2;
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt())
{
int year1=sc.nextInt();
int month1=sc.nextInt();
int day1=sc.nextInt();
int year2=sc.nextInt();
int month2=sc.nextInt();
int day2=sc.nextInt();
total1=CalculateYear(year1,month1)+CalculateMonth(year1,month1)+CalculateDay(day1);
total2=CalculateYear(year2,month2)+CalculateMonth(year2,month2)+CalculateDay(day2);
System.out.println(Math.abs(total1-total2));
}
sc.close();
}
}