【2005日目は何日目?】

1447 ワード

何日目ですか.
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 57077    Accepted Submission(s): 21661
Problem Description
日付を指定します.この日付を出力するのは、その年の数日目です.
 
Input
入力データには複数のグループがあり、各グループが1行を占め、データフォーマットはYYYY/MM/DDで構成されています.具体的にはsample inputを参照してください.また、すべての入力データが合法であることを確認することができます.
 
Output
入力データのセットごとに、日付が年の日付であることを示す行を出力します.
 
Sample Input

   
   
   
   
1985/1/20 2006/3/12

 
Sample Output

   
   
   
   
20 71

 
#include<iostream>
using namespace std;
int main(){
	int s[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
					{31,29,31,30,31,30,31,31,30,31,30,31}
					};
	int year,month,day;
	while(scanf("%d/%d/%d",&year,&month,&day)!=EOF){
		int sum=0;
		for(int i=0;i<month-1;i++){
			if((year%4==0 &&year%100!=0)||year%400==0)
				sum+=s[1][i];
			else
				sum+=s[0][i];

	}
		sum+=day;
		cout<<sum<<endl;
}
}

潤年の判断条件は、*その年分4で除けるが100で除けることができない場合、閏年である.*当年分が400で除かれたのは、閏年です.*