Problem:
日数

2 つの日付を入力とし、その 2 つの日付けの間の日数を出力するプログラムを作成してください。

日付 1 (y1, m1, d1) は日付 2 (y2, m2, d2) と同じか、あるいはそれ以前の日付とします。日付 1 は日数に含め、日付 2 は含めません。また、うるう年を考慮にいれて計算してください。うるう年の条件は次のとおりとします。

西暦年が 4 で割り切れる年であること。

ただし、100 で割り切れる年はうるう年としない。

しかし、400 で割り切れる年はうるう年である。

Input

複数のデータセットが与えられます。各データセットの形式は以下のとおりです：

y1 m1 d1 y2 m2 d2

y1, m1, d1, y2, m2, d2 のいずれかが負の数のとき入力の終わりとします。

データセットの数は 50 を超えません。

Output

データセットごとに、日数を１行に出力してください。

Sample Input

2006 9 2 2006 9 3
2006 9 2 2006 11 11
2004 1 1 2005 1 1
2000 1 1 2006 1 1
2000 1 1 2101 1 1
-1 -1 -1 -1 -1 -1

Output for the Sample Input

1
70
366
2192
36890

Solution in JAVA (judge verdict: Accepted)

import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;

public class Main{

	Scanner sc=new Scanner(System.in);;

	int INF=1<<28;
	double EPS=1e-9;

	void run(){
		for(;;){
			int y1=sc.nextInt();
			int m1=sc.nextInt();
			int d1=sc.nextInt();
			int y2=sc.nextInt();
			int m2=sc.nextInt();
			int d2=sc.nextInt();
			if(y1<0||m1<0||d1<0||y2<0||m2<0||d2<0){
				break;
			}
			/*
			 * Calendar c1=Calendar.getInstance();
			 * Calendar c2=Calendar.getInstance();
			 * c1.set(y1, m1, d1);
			 * c2.set(y2, m2, d2);
			 * long diff=c2.getTime().getTime()-c1.getTime().getTime();
			 * println((diff/1000/60/60/24)+"");
			 */
			int a=day(y1, m1, d1);
			int b=day(y2, m2, d2);
			println((b-a)+"");
		}
	}

	int day(int y, int m, int d){
		int res=0;
		int[] days={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
		int[] sum=new int[12];
		for(int i=1; i<12; i++){
			sum[i]=sum[i-1]+days[i-1];
		}
		res+=y*365+sum[m-1]+d-1;
		if((m==2&&d<=28)||m==1){
			y--;
		}
		if(y>=0){
			res+=y/4+1;
			res-=y/100+1;
			res+=y/400+1;
		}
		return res;
	}

	void debug(Object... os){
		System.err.println(Arrays.deepToString(os));
	}

	void print(String s){
		System.out.print(s);
	}

	void println(String s){
		System.out.println(s);
	}

	public static void main(String[] args){
		new Main().run();
	}
}