传送门
对于每一个八位日期,检查连续的三位是否是顺子.
Code:
#include <bits/stdc++.h>
using i64 = long long;
constexpr int monthday[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int year = 2022;
int ans = 0;
for (int month = 1; month <= 12; month++) {
for (int day = 1; day <= monthday[month]; day++) {
std::vector<int> digits;
//vector用来存储日期的每一位数字
int sum = year * 10000 + month * 100 + day * 1;
//转化为8位
while (sum) {
digits.push_back(sum % 10);
sum /= 10;
}
std::reverse(digits.begin(), digits.end());
//翻转一下
for (int i = 0; i <= 5; i++) {
if (digits[i] == digits[i + 1] - 1 && digits[i + 1] == digits[i + 2] - 1)
{
ans++;
break;
//是顺子日期
}
}
if (day == monthday[month]) {
break;
//更新月份
}
}
}
std::cout << ans << "\n";
return 0;
}