回文数概念:即是给定一个数,这个数顺读和逆读都是一样的。例如: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%10;
x/=10;
}while(x>0);
if(n==a)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}