C 實現CCF201503 3 節日

2021-10-23 03:24:52 字數 1491 閱讀 1984

問題描述

輸入格式

輸入包含恰好一行,有五個整數a, b, c, y1, y2。其中c=1, 2, ……, 6, 7分別表示星期

一、二、……、六、日。

輸出格式

對於y1和y2之間的每乙個年份,包括y1和y2,按照年份從小到大的順序輸出一行。

如果該年的a月第b個星期c確實存在,則以"yyyy/mm/dd"的格式輸出,即輸出四位數的年份,兩位數的月份,兩位數的日期,中間用斜槓「/」分隔,位數不足時前補零。

如果該年的a月第b個星期c並不存在,則輸出"none"(不包含雙引號)。

樣例輸入

5 2 7 2014 2015

樣例輸出

2014/05/11

2015/05/10

評測用例規模與約定

所有評測用例都滿足:1 ≤ a ≤ 12,1 ≤ b ≤ 5,1 ≤ c ≤ 7,1850 ≤ y1, y2 ≤ 2050。

滿分**

#includeusing namespace std;

bool is_leap_year(int year)

int main();

cin>>a>>b>>c>>y1>>y2;

if(c == 7) // **中星期天用0表示(便於使用求餘運算),題目中星期天用7表示

c = 0;

// 從2023年y1的天數

for(int i = 1850; i < y1; i++)

// 遍歷y1年到y2年,然後求結果

for(int i = y1; i <= y2; i++)

else

// 獲取前a個月的天數,注意控制條件是a-1(月下標從0開始)

for(int j = 0; j < a - 1; j++)

week += month[j];

// 獲得第i年前a個月星期幾

week = (week % 7 + 1) % 7; // +1,因為2023年1月1日星期二

// 獲得天數

int d = (c + 7 - week) % 7;// 類似迴圈佇列中求佇列長

if(d == 0) // 上個月最後一天week==c,則d需要7

d = 7;

d += 7 * (b - 1);

if(d > month[a-1]) // 若所求天數大約第a月天數時,則輸出none

cout<<"none"

printf("%04d/%02d/%02d\n", i, a, d);

} return 0;

}

CCF 201503 3 節日 題解

問題描述 有一類節日的日期並不是固定的,而是以 a月的第b個星期c 的形式定下來的,比如說母親節就定為每年的五月的第二個星期日。現在,給你a,b,c和y 1,y 2 1850 y 1,y 2 2050 希望你輸出從公元y 1年到公元y 2年間的每年的a月的第b個星期c的日期。為了方便你推算,已知18...

CCF201503 3節日(公式計算星期)

試題編號 201503 3 試題名稱 節日時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 輸入格式 輸入包含恰好一行,有五個整數a,b,c,y1,y2。其中c 1,2,6,7分別表示星期 一 二 六 日。輸出格式 對於y1和y2之間的每乙個年份,包括y1和y2,按照年份從小到大的...

CCF考試 201503 3節日

問題描述 輸入格式 輸入包含恰好一行,有五個整數a,b,c,y1,y2。其中c 1,2,6,7分別表示星期 一 二 六 日。輸出格式 對於y1和y2之間的每乙個年份,包括y1和y2,按照年份從小到大的順序輸出一行。如果該年的a月第b個星期c確實存在,則以 yyyy mm dd 的格式輸出,即輸出四位...