切黄了555(建议将橙
2025-09-22 21:45:42
发布于:广东
0阅读
0回复
0点赞
这么简单的题
我绝对不会告诉你我调了好多遍
思路:
把八位数当成字符串输入进去,让后分别算出起始的年月日和结束的年月日,然后就可以开始爆模,然后你就会发祥AC了。
#include<bits/stdc++.h>
using namespace std;
int by,ey,bm,em,bd,ed;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int cnt;
bool run(int x){
if(x%4==0&&x%100!=0||x%400==0) return true;
return false;
}
bool check(string a){
string ret="";
for(int i=a.size()-1;i>=0;i--) ret+=a[i];
if(ret==a) return true;
return false;
}
int main(){
string a,b;
cin>>a>>b;
for(int i=0;i<4;i++){
by+=(a[i]-'0')*pow(10,4-i-1);
ey+=(b[i]-'0')*pow(10,4-i-1);
}
for(int i=4;i<6;i++){
bm+=(a[i]-'0')*pow(10,6-i-1);
em+=(b[i]-'0')*pow(10,6-i-1);
}
for(int i=6;i<8;i++){
bd+=(a[i]-'0')*pow(10,8-i-1);
ed+=(b[i]-'0')*pow(10,8-i-1);
}
while(1){
if(run(by)) month[2]=29;
else month[2]=28;
string x;
string first=to_string(by),second=to_string(bm),third=to_string(bd);
x+=first;
if(second.size()==1) x=x+"0"+second;
else if(second.size()==2) x=x+second;
if(third.size()==1) x=x+'0'+third;
else if(third.size()==2) x=x+third;
if(check(x)){
cnt++;
}
if(by==ey&&bm==em&&bd==ed){
break;
}
if(bd==month[bm]&&bm==12){
bd=1;
bm=1;
by++;
}
else if(bd==month[bm]){
bd=1;
bm++;
}
else bd++;
}
cout<<cnt;
return 0;
}
这里空空如也
有帮助,赞一个