#include <stdio.h> void pali(int n){ /* 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式 输入一行,包含一个正整数n。 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899 数据规模和约定 1<=n<=54。 */ //先把5位数的直接暴力循环出来,再把6位数的暴力循环出来 int i, j, k, l, m, r; int sum; for(i = 0; i < 10; ++i){ for(j = 0; j < 10; ++j){ for(k = 0; k < 10; ++k){ for(l = 0; l < 10; ++l){ for(m = 0; m < 10; ++m){ sum = i+j+k+l+m; if(sum == n && i == m && j == l) printf("%d%d%d%d%d ", i, j, k, l, m); } } } } } for(i = 0; i < 10; ++i){ for(j = 0; j < 10; ++j){ for(k = 0; k < 10; ++k){ for(l = 0; l < 10; ++l){ for(m = 0; m < 10; ++m){ //printf("%d%d%d%d%d", i, j, k, l, m); for(r = 0; r < 10; ++r){ sum = i+j+k+l+m+r; if(sum == n && i == r && j == m && k == l) printf("%d%d%d%d%d%d ", i, j, k, l, m, r); } } } } } } return; } int main(void){ int pailNum; //printf("input a palindromic number:"); scanf("%d", &pailNum); while (pailNum>54 || pailNum < 1){ //printf("the number should smaller than 54 and bigger than 1. input a palindromic number:"); scanf("%d", &pailNum); } pali(pailNum); return 0; }
额。。系统显示80分。。。