C 藍橋杯 ADV 127 日期計算

2021-10-04 06:33:34 字數 1648 閱讀 7740

問題描述

已知2023年11月11日是星期五,問yyyy年mm月dd日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢400年閏的情況。

輸入格式

輸入只有一行

yyyy mm dd

輸出格式

輸出只有一行

w資料規模和約定

1599 <= yyyy <= 2999

1 <= mm <= 12

1 <= dd <= 31,且確保測試樣例中yyyy年mm月dd日是乙個合理日期

1 <= w <= 7,分別代表周一到週日

樣例輸入

2011 11 11

樣例輸出

5

蔡勒公式

蔡勒公式 根據給定的年月日求出對應星期幾

(1)第一種方法就是往後推,先計算出兩個日期差的天數,然後對7取餘。

(2)蔡勒公式。

公式 : w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 (w代表星期幾)

w對7取余得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六

注意:蔡勒公式只適合於2023年(中國明朝萬曆十年)10月15日之後的情形。

當年的1,2月要當成上一年的13,14月進行計算。

#include

#include

#include

#include

#include

using

namespace std;

intmain()

if(year>=

1582

&&month>=

10&&day>=4)

x =(day +1+

2* month +3*

( month +1)

/5+ year + year /

4- year /

100+ year /

400)%7

;else

x =(day +1+

2* month +3*

( month +1)

/5+ year + year /4+

5)%7

;printf

("%d\n"

, x)

;return0;

}

#include

#include

using

namespace std;

int d[2]

[13]=

,};int a[7]

=;intleap

(int year)

intleap1

(int year)

intmain()

while

(month>1)

day2=day2+day-1;

printf

("%d\n"

,a[day2%7]

);}return0;

}

藍橋杯 ADV 127 日期計算

問題描述 已知2011年11月11日是星期五,問yyyy年mm月dd日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢400年閏的情況。輸入格式 輸入只有一行 yyyy mm dd 輸出格式 輸出只有一行 w樣例輸入 2011 11 11 樣例輸出 5資料規模和約定 1599 yyyy 2999 ...

藍橋杯 ADV 127 日期計算(試題解析)

提交此題 評測記錄 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 已知2011年11月11日是星期五,問yyyy年mm月dd日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢400年閏的情況。輸入格式 輸入只有一行 yyyy mm dd 輸出格式 輸出只有一行 w資料規模和約...

藍橋杯 2014 3 日期差

歷史上,不同的人類聚居地可能有不同的曆法,因而記錄下來的資料中日期的換算就很麻煩。幸好今天我們統一使用公元紀年法。當然,這種曆法對求兩個日期差多少天也不是十分簡便,但畢竟是可以忍受的。下面的程式計算了兩個日期的差值,兩個日期都使用公元紀年法。請分析程式邏輯,並推斷劃線部分缺失的 int to day...