蓝桥杯 BASIC-9 特殊回文数

  基础练习 特殊回文数  

时间限制:1.0s   内存限制:512.0MB

      

问题描述

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

输入格式

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

输出格式

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

样例输入

52

样例输出

899998
989989
998899

数据规模和约定

  1<=n<=54。

分析:暴力解,遍历所有数字,符合两项要求即输出。这里用vector存储、比较序列。

代码:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> p, q;
int main() {
	int n;
	cin >> n;
	for (int i = 10001; i <= 999999; i++) {
		p.clear();
		q.clear();
		int temp = i;
		int sum = 0;
		while (temp != 0) {
			p.push_back(temp % 10);
			sum += temp % 10;
			temp /= 10;
		}
		if (sum != n) {
			continue;
		} else {
			q = p;
			reverse(p.begin(), p.end());
			bool flag = true;
			for (int j = 0; j < p.size() / 2; j++) {
				if (p[j] != q[j]) {
					flag = false;
					break;
				}
			}
			if (flag == true) {
				cout << i << endl;
			}
		}
	}
	return 0;
}

 

点赞