藍橋杯 ADV 127 日期計算

2021-10-01 03:12:20 字數 1633 閱讀 4446

問題描述

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

輸入格式

輸入只有一行

yyyy mm dd

輸出格式

輸出只有一行

w樣例輸入

2011 11 11

樣例輸出

5資料規模和約定

1599 <= yyyy <= 2999 1 <= mm <= 12 1 <= dd <= 31,且確保測試樣例中yyyy年mm月dd日是乙個合理日期 1 <= w <= 7,分別代表周一到週日

思路解析

#include

using

namespace std;

// 判斷指定年份是否為閏年,true為閏年,false為平年

bool

leapyear

(int year)

return

false;}

// 返回指定月份的天數

intdays

(int mouth,

bool leap)

return30;

}int

main()

else

if(year ==

2011

)else

if(mouth ==11)

else

if(day ==11)

}}int distance =0;

// 計算輸入日期與2011-11-11相差的天數

// 日期在2011-11-11之後的處理

if(flag)

else}if

(year ==

2011

) distance +

= day -11;

// 統計日期相差的天數

}else

distance +

= day +(30

-11)+

31;// 2023年剩下的天數 30 - 11 + 31,再加輸入日期帶來的天數差距

}int increment = distance %7;

// 星期的增量

int res = increment +5;

// 記錄最終結果

if(res >7)

res %=7

; cout << res;

return0;

}// 日期在2011-11-11之前

else

else}if

(year ==

2011

) distance +=11

- day;

// 日期帶來的天數差距

}else

distance +

=315

- day;

// 315為2023年的天數差距,即10個月加11天

}int increment = distance %7;

int res =

5- increment;

if(res <1)

res +=7

; cout << res;

return0;

}}

雖然**有點長,思路還是清晰的。

C 藍橋杯 ADV 127 日期計算

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

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

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

藍橋杯 2014 3 日期差

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