c++特殊回文数
作者:野牛程序员:2023-07-16 07:43:44题目阅读 2898
c++特殊回文数
【问题描述】
123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
【输入格式】
输入一行,包含一个正整数n。
【输出格式】
按从小到大的顺序输出满足条件的整数,每个整数占一行。
【样例输入】
52
【样例输出】
899998 989989 998899
【数据规模和约定】
1<=n<=54。
下面是用C++编写的程序来解决这个问题:
#include <iostream>
// 判断一个数是否是回文数
bool isPalindrome(int num) {
int originalNum = num;
int reverseNum = 0;
while (num > 0) {
int digit = num % 10;
reverseNum = reverseNum * 10 + digit;
num /= 10;
}
return originalNum == reverseNum;
}
// 计算一个整数的各位数字之和
int digitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int main() {
int n;
std::cin >> n; // 输入整数n
// 遍历所有五位和六位整数
for (int num = 10000; num <= 999999; num++) {
if (isPalindrome(num) && digitSum(num) == n) {
std::cout << num << std::endl; // 输出满足条件的整数
}
}
return 0;
}在main函数中,我们遍历所有五位和六位的整数,并使用isPalindrome函数检查是否是回文数。同时,我们还保留了之前提到的digitSum函数来计算各位数字之和。只有当一个数同时满足回文数和各位数字之和等于n的条件时,才输出该整数。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:进入BIOS的另一种方式
- 下一篇:Python特殊回文数
