LaFanCYC @ 2024-12-18 18:32:56
不知道是不是超时,但超时不应该爆TLE吗
#include<bits/stdc++.h>
using namespace std;
int date1,date2,sum;
bool isy(int y){
if(y%4==0&&y%100!=0) return true;
if(y%400==0) return true;
return false;
}
int ism(int m,int y){
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) return 31;
if(m==4||m==6||m==9||m==11) return 30;
if(m==2&&isy(y)==true) return 29;
if(m==2&&isy(y)==false) return 28;
}
int datego(int x){
int y=x/10000,m=x%10000/100,d=x%100;
if(ism(m,y)>=d) d++;
else {
m++;
d=1;
}
if(y==12) m=1,y++;
return y*10000+m*100+d;
}
bool ishw(int x){
int n=0,m=0;
n=x;
while(n!=0){
m*=10;
m+=n%10;
n/=10;
}
if(x==m) return true;
else return false;
}
int main(){
cin>>date1>>date2;
int i=date1;
while(i<=date2){
if(ishw(i)==true) sum++/*,cout<<i<<endl*/;
i=datego(i);
}
cout<<sum<<endl;
return 0;
}
by umirin @ 2024-12-18 19:01:10
真的好奇怪,这个代码不仅厌氧而且每月的天数也不对。开O2错4点,关O2错2点,把每个月的天数判定改对更是错3点,神人代码
by lifeam @ 2024-12-18 19:24:01
y==12改成m==13
第二个错误还在找(大悲)
by lifeam @ 2024-12-18 19:25:30
找到了
ism(m,y)>=d改成ism(m,y)>d
by lifeam @ 2024-12-18 19:26:19
@LaFanCYC
应该能过
by lifeam @ 2024-12-18 19:27:51
@umirin
应该是因为数据原因
(毕竟很少有回文数在月底,所以错的少)
by umirin @ 2024-12-18 19:34:01
@lifeam看起来我们改到最后能AC的思路是一样的,只不过我的似乎更麻烦一点。我是把那个m==12的判定丢到月底判定里面顺便重置了个天数。不过反正最后都的确是通过了。如果yc知道你也为了改他的代码试错很多遍的话他应该会很感动吧233\ 总之感谢贡献
by lifeam @ 2024-12-18 19:36:52
@umirin
顺手的事
话说你是他朋友·-·?
by umirin @ 2024-12-18 19:38:45
@lifeam是这样()