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&2024新奥天天免费资料nbsp;digit = num % 10; reverseNum = reverseNum * 10 + digit; num /= 10; } return originalNum == reverseNum; } // 计算一个整数的各位数字之和 int digitSum(int num) { int sum = 0; while (num > 0) { &管家婆报_六特网资料大全 nbsp; 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; }
在函数中,我们遍历所有五位和六位的整数,并使用函数检查是否是回文数。同时,我们还保留了之前提到的函数来计算各位数字之和。只有当一个数同时满足回文数和各位数字之和等于n的条件时,才输出该整数。