藍橋杯 演算法提高 日期計算

2021-10-08 06:03:13 字數 1314 閱讀 2170

問題描述

已知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

#include

#include

using

namespace std;

int mouth[13]

=;int yy,mm,dd;

int day=

0,k=

0,i;

boolpd(

int n)

voida(

)else

day+

=(yy-

2011-1

)*365+k;

//中間間隔的整年差

for(i=

1;i) day+

=dd;if(

pd(yy)

&&mm>2)

day++

; day+=50

;}int zz=

((day)%7

+5)%

7;if(

!zz)cout<<7;

else

cout<}voidb(

)}else

day+=(

2011

-yy-1)

*365

+k;//中間間隔的整年差

for(i=

12;i>mm;i--

) day+

=mouth[mm]

-dd;if(

pd(yy)

&&mm<=2)

day++

; day+

=315

;}day=(5

-day%7)

>0?

(5-day%7)

:-1*

(5-day%7)

;if(!day)cout<<7;

else

cout<}int

main()

藍橋杯 演算法提高 日期計算

這種型別的問題其實不難,就是要考慮的方面多一些。大概的解決辦法就是先把兩個年份之間的天數算出來,在精確求出該年份內的天數 起始日期定為 x年1月1日比較好算 注意要分為在起始日期之前還是之後,這得分開算。include using namespace std bool isleapyear int ...

藍橋杯 演算法提高 日期計算

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

藍橋杯 演算法提高 日期計算

author chenmingdong 問題描述 已知2011年11月11日是星期五,問yyyy年mm月dd日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢400年閏的情況。通過電腦諮詢到2016年1月1日也是 星期五 include int judge int year int get yea...