回文数
题目描述:
回文数是正着读与倒着读都一样的数,比如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;//输出回文数 } } }