2020藍橋杯省賽B組 試題G 回文日期

2021-10-21 06:53:16 字數 1294 閱讀 4719

這是一道難度比較簡單的題目,資料規模較小,用暴力的方法也能破解,只是處理的過程較為繁瑣。我一開始的想法是日期逐天增加,直到找到滿足的答案為止。但這種方法很低階暴力,實在是想不出來好的方法才打算採用。我們其實不難發現乙個規律:回文日期和 ababbaba 型的回文日期的格式是固定,利用這種格式的特點,我們可以分別由前面4位和2位數字構造出新的日期,再對日期的合法性就行檢驗,如果不是合法的日期格式,再改變前面4位或2位數字繼續構造日期,這樣對8位數的處理就變成4位和2位,對答案的求解我個人認為是有加速作用的(如果理解有誤希望大家斧正)。

2020 年春節期間,有乙個特殊的日期引起了大家的注意:2020 年 2 月 2 日。因為如果將這個日期按 「yyyymmdd」 的格式寫成乙個 8 位數是 20200202,恰好是乙個回文數。我們稱這樣的日期是回文日期。

也有人表示 20200202 並不僅僅是乙個回文日期,還是乙個 ababbaba 型的回文日期。對此小明也不認同,因為大約 100 年後就能遇到下乙個 ababbaba 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 「千年一遇」,頂多算 「千年兩遇」。

給定乙個 8 位數的日期,請你計算該日期之後下乙個回文日期和下乙個 ababbaba 型的回文日期各是哪一天。

輸入包含乙個八位整數 nn,表示日期。

對於所有評測用例,10000101 \leq n \leq 8999123110000101≤n≤89991231,保證 nn 是乙個合法日期的 8 位數表示。

輸出描述

輸出兩行,每行 1 個八位數。第一行表示下乙個回文日期,第二行表示下乙個 ababbaba 型的回文日期。

輸入

20200202
輸出

20211202

21211212

#include

using namespace std;

int days[13]

=;//check函式用來檢查得到的日期是否合法

bool check

(int date)

return true;

}int

main()

if(date1>n&&

check

(date1))}

int ab=n/

1000000

;for

(int i=ab;

;++i)

}return0;

}

如果平時不堅持敲**,這種題目在賽場上就比較搞心態。嗚嗚嗚,生命不止,coding不息。

計蒜客2020 藍橋杯省賽 B 組模擬賽(一)

1 有趣的數字 題目描述 我們稱乙個數是質數,而且數字 現了 55 的數字是有趣的。例如 5,59,4575,59,457 都是有趣的,而 15,715,7 不是。求 11 到 100000100000 中有趣的數的個數。思路 這道題就是判斷質數,和分解數字,通過for迴圈對1 100000的每乙個...

2020藍橋杯B組省賽 E 七段碼

題解 正規解法是 dfs 並查集,首先用 dfs 將其所有的情況列舉出來,再用並查集來判斷是否在乙個連通塊上。許多小夥伴計算的答案為76,主要是判斷連通塊這方面有問題,倘若不用並查集,直接列舉一條邊是否和其餘剩下的邊相連,是就成立,不是就可以直接退出了,但是有乙個問題是例如兩個連通塊的時候你上述的判...

2019 藍橋杯省賽 B 組模擬賽(一)

d.結果填空 馬的管轄 e.填空 lis f.程式設計 找質數 思路 因為時間複雜度的問題,o n n 的時間複雜度可能會超時,可以選擇的篩選素數的方法有埃氏篩法o n logn 尤拉篩法,這裡選的是尤拉篩法o n 直接遍歷找兩個素數相加等於n 因為要求字典樹最小,所以不會超時 ac include...