'commit'
This commit is contained in:
50
TangDou/CSP-J/BiShuaTi/meiju/P2010_WithOutRn.cpp
Normal file
50
TangDou/CSP-J/BiShuaTi/meiju/P2010_WithOutRn.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
// https://www.luogu.com.cn/problem/P2010
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int months[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||
|
||||
//是不是回文字符串
|
||||
bool isHW(string s) {
|
||||
string t = s;
|
||||
reverse(t.begin(), t.end());
|
||||
return s == t;
|
||||
}
|
||||
//通过年月日的整数类型值,构建出一个字符串的年月日
|
||||
string build(int year, int month, int date) {
|
||||
char x[18]; //不太会使用这个char数组,因为最后一个位置需要放置\0,所以需要开大一点点
|
||||
sprintf(x, "%04d%02d%02d", year, month, date); //拼接出一个字符串
|
||||
return x; //将字符数组转为字符串,直接赋值即可
|
||||
}
|
||||
|
||||
int cnt;
|
||||
int main() {
|
||||
string st, ed;
|
||||
cin >> st >> ed;
|
||||
|
||||
int y1 = stoi(st.substr(0, 4)); //截取字符串,字符串转数字
|
||||
int y2 = stoi(ed.substr(0, 4));
|
||||
|
||||
//枚举所有可能年份
|
||||
for (int i = y1; i <= y2; i++)
|
||||
// 枚举月份
|
||||
for (int j = 1; j <= 12; j++)
|
||||
//构建所有可能的日期
|
||||
for (int k = 1; k <= 31; k++) {
|
||||
//闰年的话,二月份的日期不太一样
|
||||
int maxd = months[j - 1];
|
||||
if (k > maxd) break; //越界的日期没有意义
|
||||
//合法日期,构建成字符串
|
||||
string s = build(i, j, k);
|
||||
|
||||
//与范围字符串st,ed进行比较,如果不在范围内,continue
|
||||
if (s < st || s > ed) continue;
|
||||
|
||||
//判断是不是回文
|
||||
if (isHW(s)) cnt++;
|
||||
}
|
||||
//输出
|
||||
printf("%d\n", cnt);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user