题目描述
2020年已经过去,这一年“鼠”实不易,期待2021年“牛”转乾坤。
2020年2月2日,是900多年难得一见的回文日,这一天不管是中国把年份写在前面的20200202的公制记法,还是用美国的月、日、年的日期写法02022020,都是罕见的回文日。
上一次出现这样的现象是909年前,1111年的11月11日。之后还得等到2121年12月12日,才会再一次遇上完全回文日。
输入一个正整数,判断它是否为回文数,如果是回文数则输出"Yes",否则输出将这个数的数字按相反的顺序重新排列后的数。
输入
输入数据仅有一行包含一个正整数n,n不超过2000000000。
输出
输出数据仅有一行,如果读入的数是回文数则输出Yes,否则输出将这个数的数字按相反的顺序重新排列后的数
样例输入
2011
样例输出
1102
题目思路:
这道题目较为简单,判断1个数是否是回文数,无非是先将这个数一位一位进行拆分,存入一个数组中,然后从数组的两端开始逐一进行比较,如果在数组中对称的两端元素不同,则说明此数不是回文数,全部比较完毕,若没有发现数组中两端对称位置的元素不同,则说明此数是回文数(正着读和反着读一样)。
题目代码:
#include <iostream>
using namespace std;
int n;
int a[11];
/*n不超过2000000000,说明将n一位一位分离过后,最多可以分离出10个数。
a[]数组存储分离出来的每一位数据。*/
int count=0;//计数器count计数一共分离出来的数据有几个。
int flag=0;//设置标志位,flag=0—该数为回文数,flag=1—该数不是回文数。
/*分离n的函数*/
void split(int n)
{
int i=0;
while(n!=0)
{
a[i++]=n%10;
n/=10;
count++;
}
}
int main()
{
cin>>n;
split(n);
for(int i=0,j=count-1;i<=j;i++,j--)
{
if(a[i]!=a[j])
{
flag=1;
break;
}
}
if(flag==0)
cout<<"Yes";
else
{
for(int i=0;i<count;i++)
cout<<a[i];
}
return 0;
}
总体而言,该题还是比较简单的,这边我也就不再过多赘述。
好了,本次的分享就先到这,如果有任何疑问。欢迎大家在评论区进行留言,感谢大家的捧场,我们下期再见。