特殊回文数
时间限制:1.0s 内存限制:512.0MB
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
和之前那个一样。。
AC代码:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 2000; int palin[maxn], num = 0; int is_palin(int n) //判断是否是回文数 { if(n<100000) { if( (n/10000 == n%10) && (n/1000%10 == n/10%10) ) return 1; } else { if((n/100000 == n%10) && (n/10000%10 == n/10%10) && (n/1000%10 == n/100%10)) return 1; } return 0; } void init() //回文数打表 { for(int i=10000; i<=999999; i++) { if(is_palin(i)) palin[num++] = i; } } int fun(int n) //判断是否符合条件 { int t = 0, m = n; while(m) { t += m%10; m /= 10; } return t; } int main() { init(); int n; while(scanf("%d", &n) != EOF) { for(int i=0; i<num; i++) { if(fun(palin[i]) == n) printf("%d\n", palin[i]); } } return 0; }
时间: 2024-09-19 12:56:40