回文数

题目描述:

回文数是正着读与倒着读都一样的数,比如141是回文数,144不是回文数。

编程求出不超过n的回文数。

输入格式:

输入一行,包含一个整数

输出格式:

输出所有的回文数,每一行输出一个,具体见样例输出。

样例输入:

11

样例输出:

1

2

3

4

5

6

7

8

9

11

约定:

1<=n<=100000

#include<bits/stdc++.h>
using namespace std;
int fzm(int m){
    int a[7]={0};//1<=n<=100000
    int n=m;
    int k=0;
    int b[7];
    for(int i=1;i<=6;i++){
        a[i]=n%10;//把数字分解,放进数组,比如12345,分解成5,4,3,2,1
        n=n/10;//移位,比如12345进行此句后(int)"1234"
        if(n>0&&a[i]==0){//如果这个数有"0" ,比如:101
            b[i]=1;//做记号
        }
    }
    for(int i=1;i<=6;i++){//执行变化数字,比如a[3]={3,2,1},变成321
        if(a[i]==0&&b[i]==1){//执行特殊运算,比如a[5]=    {1,0,1,0,0},a[2]=0,但a[3]=1,执行此算法 
            k=k*10+a[i];
        }else{
            if(a[i]==0){//不执行以上算法,判断是否等于0 
                k+=a[i];
            }else{//a[i]>0执行 
                k=k*10+a[i];
            }
        }
    }
    return k;//返回k
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int t=fzm(i);//调用函数
        if(t==i){//判断是否是回文数
            cout<<t<<endl;//输出回文数
        }
    }
}
posted @ 2020-09-16 20:30  Euclid·Guisi  阅读(657)  评论(0编辑  收藏  举报