dalao求助
#include<iostream>
using namespace std;
const int mod[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int d1,d2,ans=0;
bool check(int x){
int a=x,b;
while(x){
b=10*b+x%10;
x/=10;
}
if(a==b) return 1;
return 0;
}
int add(int x){
int t1,t2,t3,res;
t3=x%100+1;
x/=100;
t2=x%100;
x/=100;
t1=x;
if((t1%4==0&&t1%100!=0)||t1%400==0){
if(t2==2){
if(t3>29){
t2++;
t3=1;
if(t2>12){
t2=1;
t1++;
}
}
}
else{
if(t3>mod[t2]){
t2++;
t3=1;
if(t2>12){
t2=1;
t1++;
}
}
}
}
else{
if(t3>mod[t2]){
t2++;
t3=1;
if(t2>12){
t2=1;
t1++;
}
}
}
res=10000*t1+100*t2+t3;
return res;
}
int main(){
scanf("%d %d",&d1,&d2);
for(int i=d1;i<=d2;i=add(i)){
// printf("%d\n",i);
if(check(i)) ans++;
}
printf("%d",ans);
return 0;
}
为什么把那个用于测试的printf注释掉后ans的值和未注释前不一样啊?