知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
2020第11屆藍(lán)橋杯C++B組(不確保答案正確性,僅供參考)2020藍(lán)橋試題 G: 回文日期
發(fā)表時(shí)間:2020-10-17
發(fā)布人:葵宇科技
瀏覽次數(shù):179
試題 G: 回文日期
時(shí)間限制: 1.0s 內(nèi)存限制: 256.0MB 本題總分:20 分
【問題描述】
2020 年春節(jié)期間,有一個(gè)特殊的日期引起了大家的注意:2020 年 2 月 2日。因?yàn)槿绻麑⑦@個(gè)日期按 “yyyymmdd” 的格式寫成一個(gè) 8 位數(shù)是 20200202,恰好是一個(gè)回文數(shù)。我們稱這樣的日期是回文日期。有人表示 20200202 是 “千年一遇” 的特殊日子。對(duì)此小明很不認(rèn)同,因?yàn)椴坏?2 年之后就是下一個(gè)回文日期:20211202 即 2021 年 12 月 2 日。也有人表示 20200202 并不僅僅是一個(gè)回文日期,還是一個(gè) ABABBABA型的回文日期。對(duì)此小明也不認(rèn)同,因?yàn)榇蠹s 100 年后就能遇到下一個(gè)ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,頂多算 “千年兩遇”。給定一個(gè) 8 位數(shù)的日期,請(qǐng)你計(jì)算該日期之后下一個(gè)回文日期和下一個(gè)ABABBABA 型的回文日期各是哪一天。
【輸入格式】
輸入包含一個(gè)八位整數(shù) N,表示日期。
【輸出格式】
輸出兩行,每行 1 個(gè)八位數(shù)。第一行表示下一個(gè)回文日期,第二行表示下一個(gè) ABABBABA 型的回文日期。
【樣例輸入】
20200202
【樣例輸出】
20211202
21211212
試題 G: 回文日期 9
第十一屆藍(lán)橋杯大賽軟件類省賽第二場 C/C++ 大學(xué) B 組
【評(píng)測用例規(guī)模與約定】
對(duì)于所有評(píng)測用例,10000101 ≤ N ≤ 89991231,保證 N 是一個(gè)合法日期的
8 位數(shù)表示。
為防止查重系統(tǒng)誤判,故暫時(shí)只能以圖片示人
補(bǔ)充:非常感謝weixin_45803550這位朋友給我的代碼找著了一個(gè)bug,在判斷是否是ABABBABA這個(gè)地方,A與B應(yīng)該不相等才是,不然就變成AAAAAAAA形式的回文串了,哎,又錯(cuò)了一道題,請(qǐng)大家引以為戒,不要再犯我這樣的錯(cuò)誤.因?yàn)樵路菀欢ㄐ∮?2月,也就意味著,從10000101到11111110的測試點(diǎn),我的答案都是錯(cuò)的.因?yàn)檩敵鼋Y(jié)果都有11111111
#include<iostream>
#include<sstream>
#include<string>
using namespace std;
bool isRun(int y) {
return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
}
int day[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30,31,30, 31};
int getDay(int y, int m) {
if (m != 2) {
return day[m];
} else if (isRun(y)){
return 29;
} else {
return 28;
}
}
stringstream ss, s1, s2;
string getStr(int y, int m, int d) {
string str;
ss.clear();
s1.clear();
s2.clear();
string ans;
ss << y;
ss >> str;
int lenStr = str.length();
if (lenStr < 4) {
for (int i = 0; i < 4 - lenStr; i++) {
ans += '0';
}
}
ans += str;
s1 << m;
s1 >> str;
lenStr = str.length();
if (lenStr < 2) {
for (int i = 0; i < 2 - lenStr; i++) {
ans += '0';
}
}
ans += str;
s2 << d;
s2 >> str;
lenStr = str.length();
if (lenStr < 2) {
for (int i = 0; i < 2 - lenStr; i++) {
ans += '0';
}
}
ans += str;
return ans;
}
bool judgeHuiWen(string & str) {
return str[0] == str[7] && str[1] == str[6] && str[2] == str[5] && str[3] == str[4];
}
bool judgeABBA(string & str) { //ABABBABA
char A = str[0];
char B = str[1];
return A != B && str[0] == A && str[2] == A && str[5] == A && str[7] == A &&
str[1] == B && str[3] == B && str[4] == B && str[6] == B;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int N;
cin >> N;
int num = 0;
int startY = N / 10000;
int startM = N / 100 % 100;
int startD = N % 100;
// cout << startY << ' ' << startM << ' ' << startD << endl;
int y = startY;
string str;
bool flagHuiWen = false, flagAB = false;
while(y) {
for (int m = (y == startY? startM : 1); m <= 12; m++) {
for (int d = (y == startY? startD : 1) + 1; d <= getDay(y, m); d++) {
str = getStr(y, m, d);
if (!flagHuiWen && judgeHuiWen(str)) {
flagHuiWen = true;
cout << str << '\n';
}
if (!flagAB && judgeABBA(str)) {
flagAB = true;
cout << str << '\n';
}
if (flagHuiWen && flagAB) {
return 0;
}
}
}
y++;
}
return 0;
}
相關(guān)案例查看更多
相關(guān)閱讀
- 云南網(wǎng)站建設(shè)快速優(yōu)化
- 日歷組件
- web前端
- typescript
- 網(wǎng)絡(luò)公司排名
- 昆明做網(wǎng)站
- 云南網(wǎng)站建設(shè)列表網(wǎng)
- 支付寶小程序被騙
- 網(wǎng)絡(luò)公司聯(lián)系方式
- 霸屏推廣
- painter
- 網(wǎng)站建設(shè)招商
- 云南建站公司
- web服務(wù)
- 云南軟件公司
- 汽車報(bào)廢回收管理軟件
- 高端網(wǎng)站建設(shè)公司
- 網(wǎng)站排名優(yōu)化
- 汽車回收管理
- 海南小程序制作公司
- 網(wǎng)站建設(shè)開發(fā)
- 云南小程序代建
- 云南網(wǎng)站建設(shè)開發(fā)
- 云南etc微信小程序
- 云南網(wǎng)站建設(shè)方案 doc
- 云南網(wǎng)站建設(shè)服務(wù)公司
- 報(bào)廢車管理系統(tǒng)
- 云南網(wǎng)站開發(fā)
- 開通微信小程序被騙
- 云南網(wǎng)站優(yōu)化公司