2020回文日

题目描述
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;
 } 

总体而言,该题还是比较简单的,这边我也就不再过多赘述。
好了,本次的分享就先到这,如果有任何疑问。欢迎大家在评论区进行留言,感谢大家的捧场,我们下期再见。

猜你喜欢

转载自blog.csdn.net/qq_46139801/article/details/113882284