NYOJ 219 An problem about date

1017 ワード

An problem about date
時間制限:
2000 ms|メモリ制限:
65535 KB
難易度:
2
説明
acmのiphxerはいつもある日が何曜日なのか忘れていますが、彼はその日の具体的な日付を覚えていて、彼はあなたがプログラムを書いて彼を助けることを望んでいます.
 
入力
各行には3つの整数year、month、dayがあり、日付は1600年1月1日から9600年1月1日までです.
しゅつりょく
対応する週を出力し、整数で表す.(月曜日から土曜日は1-6、日曜日は0)
サンプル入力
2011 3 6
1949 10 1
2011 4 1
1945 8 15

サンプル出力
0
6
5
3

アップロード者
苗棟
C言語は日付によって曜日を判断する---キムラルソン計算式
キムラルソンの計算式:
k=(Day +1+ 2*Month + 3*(Month+1)/5 + Year + Year/4 - Year/100 + Year/400) % 7
注意:数式には他の数式とは異なる点があります.1月と2月を前年の13月と14月と見なします.例:2004-1-10であれば、2003-13-10に換算して数式計算に代入します.
西暦元年を参考にして、西暦元年1月1日を月曜日とする
#include<stdio.h>
int main(){
	int year,month,day;
	while(scanf("%d%d%d",&year,&month,&day)!=EOF){
		if(month==1||month==2){
			month+=12;
			year--;
		}
		printf("%d
",(day+1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7); } return 0; }