返回题解分享
讨论 / 题解分享/ 帖子详情

顺子日期(结果填空) - 题解

#include<bits/stdc++.h>
using namespace std;

int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

bool check_valid(int date)
{
int y = date/10000;
int m = date%10000/100;
int d = date%10000%100;
if(m<=0 || m>12) return false;
if(d<=0 || m!=2 && d>months[m]) return false;
if(m == 2)
{
if(y%4==0&&y%100!=0||y%400==0)
months[2] = 29;
if(d>months[2]) return false;
}
return true;
}

bool check(string s)
{
for (int i = 0; i < s.size(); i ++ )
{
if(s[i] - '0' + 1 = s[i + 1] - '0' && s[i + 1] - '0' + 1 = s[i + 2] - '0')
return true;
}
return false;
}

int main()
{
int res = 0;

for (int i = 20220101; i <= 20221231; i ++ )
{
if(check_valid(i))
{
string s = to_string(i);
if(check(s))
res++;
}
}
cout << res;

return 0;
}
0 回复 0 转发 0 喜欢 0 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!