题意描述:
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
解题思路:
本来想使用两个函数分别判断回文数和各位数字和是否等于n,但枚举过程太长,把问题想得太复杂了。实际上不需要写函数,直接用数组存储每位数字之和,已经限定了位数,判断回文数更直接一些。
代码实现:
1 #include<stdio.h> 2 int main() 3 { 4 int i,n,t,s=0; 5 int a[10]; 6 7 scanf("%d",&n); 8 9 for(i=10000;i<999999;i++) 10 { 11 t=i; 12 s=0; 13 for(int k=0;k<6;k++) 14 { 15 a[k]=t%10; 16 t=t/10; 17 s+=a[k]; 18 19 } 20 21 if(i<=99999&&a[4]==a[0]&&a[3]==a[1]&&n==s) 22 printf("%d ",i); 23 24 else if(i>=100000&&a[5]==a[0]&&a[4]==a[1]&&a[3]==a[2]&&n==s) 25 printf("%d ",i); 26 } 27 return 0; 28 29 }