3485 - 回文回文
时间限制 : 1 秒
内存限制 : 128 MB
123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。1<=n<=54。
题目输入
输入一行,包含一个正整数n。
题目输出
按从小到大的顺序输出满足条件的整数,每个整数占一行。
输入/输出样例
输入格式
52
输出格式
899998 989989 998899
C语言解答
int main(int argc, char* argv[]) { int a,b,c,n; while(~scanf("%d",&n)) { for(a=1;a<=9;a++) //五位 for(b=0;b<=9;b++) { c=n-2*(a+b); if(c>=0&&c<=9) printf("%d%d%d%d%d\n",a,b,c,b,a); } for(a=1;a<=9;a++) //六位 for(b=0;b<=9;b++) { c=(n-2*(a+b))/2; if(c>=0&&c<=9) { if(2*(a+b+c)==n) printf("%d%d%d%d%d%d\n",a,b,c,c,b,a); } } } return 0; }
C++解答
#include<stdio.h> int main() { int m,n,i,j,k; int sum; while(scanf("%d",&m)!=EOF) { for(i=1;i<=9;i++) for(j=1;j<=9;j++) for(k=1;k<=9;k++) { sum=(i+j+k)*2; if(sum==m) printf("%d%d%d%d%d%d\n",i,j,k,k,j,i); } } return 0; }
Java解答
import java.util.Scanner; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args){ int n = sc.nextInt(); for (int i = 1; i < 10; i++) { for (int j = 0; j < 10; j++) { for (int k = 0; k < 10; k++) { if(i*2+j*2+k==n) System.out.println(i*10000+j*1000+k*100+j*10+i); else if(i*2+j*2+k*2==n) System.out.println(i*100000+j*10000+k*1000+k*100+j*10+i); } } } } }