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: Wrong Answer)

import java.io.*;

public class Main{
	public static void main(String[] args){
		try{
			new Main();
		}catch(IOException e){
			e.printStackTrace();
		}
	}

	public int[] month = new int[]{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

	public Main() throws IOException{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String line;

		while((line = in.readLine()) != null){
			String[] tmp = line.split(" ");
			int y1 = Integer.parseInt(tmp[0]);
			int m1 = Integer.parseInt(tmp[1]);
			int d1 = Integer.parseInt(tmp[2]);
			int y2 = Integer.parseInt(tmp[3]);
			int m2 = Integer.parseInt(tmp[4]);
			int d2 = Integer.parseInt(tmp[5]);

			if(y1<0 || m1<0 || d1<0 || y2<0 || m2<0 || d2<0){
				break;
			}

			int n1 = date_to_num(y1, m1, d1);
			int n2 = date_to_num(y2, m2, d2);
			System.out.println(n2 - n1);
		}
	}

	public int date_to_num(int y, int m, int d){
		int yy = y-1;
		int n = yy*365;
		for(int i=0; i<m-1; i++){
			n += month[i];
		}
		n += d;
		n += yy/4 - yy/100 + yy/400;
		if(m>=3 && (y%4==0 && y%100!=0)){
			n++;
		}

		return n;
	}
}