蓝桥杯 试题 基础练习 特殊回文数

问题描述

  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式

  输入一行,包含一个正整数n。

输出格式

  按从小到大的顺序输出满足条件的整数,每个整数占一行。

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

  1<=n<=54。

解题思路:

这道题暴力就行,不过不要直接遍历五位数和六位数。因为是回文数,所有遍历三位数就等于遍历了五位数和六位数。顺便可以剪剪枝,如果n>45的时候,五位数就不用遍历了,9+9+9+9+9=45。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<string>
#include<cmath>
using namespace std;
int main(){
	int sum;
	cin>>sum;
	//五位数遍历
	if(sum<=45) 
	{
		for(int i=100;i<=999;i++)
		{
			int a=i/100;//百位 
			int b=i/10%10;//十位 
			int c=i%10;//个位
			if(a+b+c+b+a==sum)
				cout<<a<<b<<c<<b<<a<<endl; 
		}
	}
	//六位数遍历 
	for(int i=100;i<=999;i++)
	{
		int a=i/100;//百位 
		int b=i/10%10;//十位 
		int c=i%10;//个位
		if(a+b+c+c+b+a==sum)
			cout<<a<<b<<c<<c<<b<<a<<endl; 
	}	
} 
发布了247 篇原创文章 · 获赞 53 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_42391248/article/details/104688907