问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
#include
using namespace std;
int a[10] = { 0 };
int sum = 0;
void bfs(int s, int m, int low, int hight)
{
if (low > hight)
{
if (sum == m)
{
for (int j = 0; j < low + hight + 1; j++)
cout << a[j];
cout << endl;
}
return;
}
for (int i = 0; i < 10; i++)
{
if (s == 0 && i == 0) continue;
a[low] = a[hight] = i;
if (low == hight)
sum = sum + i;
else
sum = sum + i * 2;
bfs(s + 1, m, low + 1, hight - 1);
if (hight == low)
sum = sum - i;
else
sum = sum - i * 2;
a[low] = a[hight] = 0;
}
}
int main()
{
int n;
cin >> n;
bfs(0, n, 0, 4);
bfs(0, n, 0, 5);
return 0;
}