問題描述
輸入格式
輸入包含恰好一行,有五個整數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 的格式輸出,即輸出四位...