蓝桥杯题解-特殊回文数-BASIC-9

题目地址:特殊回文数

问题描述

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

输入格式

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

输出格式

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

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

1<=n<=54

解:

在一个for循环内进行的话,把五六位数分开判断代码清晰明了,但代码累赘。

代码:
#include"iostream"
#include"cmath"
using namespace std;

int main()
{
	int a1,a2,a3,a4,a5,a6,n;//分别五位数只用前四个
	cin>>n;
	for(int a=10000;a<1000000;a++)
		{
			if(a<100000)//针对五位
			{
				a4=a/10000;//万
				a3=a/1000-a4*10;//千
				a5=a/100-a3*10-a4*100;//百
				a2=a/10-a5*10-a3*100-a4*1000;//十
				a1=a-a2*10-a5*100-a3*1000-a4*10000;//个
			if(a1==a4&&a2==a3&&a1+a2+a3+a4+a5==n)cout<<a<<endl;
			}
			else//六位
			{
				a6=a/100000;//十万
				a5=a/10000-a6*10;//万
				a4=a/1000-a5*10-a6*100;//千
				a3=a/100-a4*10-a5*100-a6*1000;//百
				a2=a/10-a3*10-a4*100-a5*1000-a6*10000;//十
				a1=a-a2*10-a3*100-a4*1000-a5*10000-a6*100000;//个
				if(a1==a6&&a2==a5&&a3==a4&&a1+a2+a3+a4+a5+a6==n)cout<<a<<endl;
			}
		}
	return 0;
}

题解目录

猜你喜欢

转载自blog.csdn.net/qq_43508196/article/details/85882886