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

2021-10-07 16:32:19 字數 1283 閱讀 8653

提交此題

評測記錄

資源限制

時間限制:1.0s   記憶體限制:256.0mb

問題描述

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

樣例輸出

解題思路:既然2011/11/11是周五,那麼2011/11/13就是週日,以後者為 原點,向當前所在日期回溯,計算中間的天數差值,若當前日期》=原點時,差值%7即為當前日期的星期幾;若小於原點,(7-差值%7)%7即為當前日期的星期幾。不知什麼原因只跑了80分,看了一下測試資料,錯誤的都是2023年之後的日期。。。

**如下:

#include

using namespace std;

struct date

date()    

};int common[12]=;

int ran[12]=;

int wno[7]=;

bool isranyear(int yy)

else

return false;

}int getcuryeardays(date d)

if(d.year==2011)

if(d.month>11)            

}if(d.month<=11 && d.day<13)

else

daysum+=common[d.month-1]-d.day;

d.weekno=wno[(7-daysum%7)%7];}}

}if(d.year<2011)

daysum+=13;

for(int i=d.month;i<12;i++)

if(isranyear(d.year))

else

daysum+=common[d.month-1]-d.day;        

d.weekno=wno[(7-daysum%7)%7];    

}    

cout

藍橋杯 ADV 127 日期計算

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

C 藍橋杯 ADV 127 日期計算

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

藍橋杯 2014 3 日期差

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