判断回文数

    xiaoxiao2022-07-13  167

    回文数概念:即是给定一个数,这个数顺读和逆读都是一样的。例如:121,1221是回文数,123,1231不是回文数。

    第一种方法:

         使用字符串处理方式。因为回文数关于中心对称,只要比较对称的数即可。(可处理大数字)

     代码:

    #include <iostream> #include <cstring> using namespace std; int main() { char arr[1005]; int t,flag,n,i; cin>>t; while(t--) { flag=0; cin>>arr; n=strlen(arr); for(i=0;i<(n+1)/2;i++) { if(arr[i]!=arr[n-1-i]) { flag=1; break; } } if(flag==1) { cout<<"NO"<<endl; } else { cout<<"YES"<<endl; } } return 0; }

    第二种方法:

          使用数学方法。int存储,输入的回文数x的范围为x<10^9,long long存储的数,x<10^18。(数字的范围不大)

    代码:

    #include <stdio.h> #include <iostream> using namespace std; int main() { int x,a,n; while(scanf("%d",&x)!=EOF) { a=0; n=x; do { a=a*10+x; x/=10; }while(x>0); if(n==a) printf("Yes\n"); else printf("No\n"); } return 0; }

     

    最新回复(0)