折半判断,其中n<=9进行特判一下,奇数反转取一半儿多一位,偶数反转取一半儿,最后进行反转后的数字与未反转的两半儿进行比较。
#include<stdio.h>
int n;
int check(int x){
if(x%10==0&&x!=0) return 0;
if(x<=9) return 1;
int revertedNumber = 0;
while(x> revertedNumber){
revertedNumber = revertedNumber*10 + x % 10;
x = x / 10;
}
if(x==revertedNumber||x==revertedNumber/10)
return 1;
return 0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
if(check(i)){
printf("%d\n",i);
}
}
return 0;
}