下面是一个一般性解法:
#include<stdio.h>
int main()
{
int num,a,b,c,d,e,f,n;
scanf("%d",&n);
for(num=10000;num<=999999;num++)
{
if(num/100000==0) // 对位数进行判断
{
a=num/10000; //五位数,万位数
b=num%10000/1000; //千位数
c=num%10000%1000/100; //百位数
d=num%10000%1000%100/10;//十位数
e=num%10000%1000%100%10;//个位数
if(((a+b+c+d+e)==n)&&(a==e)&&(b==d))
{
printf("%d\n",num);
}
}
if(((num/100000)<=9)&&((num/100000)>=1))
{
a=num/100000; //位数,十万位数
b=num%100000/10000; //万位数
c=num%100000%10000/1000; //千位数
d=num%100000%10000%1000/100; //百位数
e=num%100000%10000%1000%100/10; //十位数
f=num%100000%10000%1000%100%10; //个位数
if(((a+b+c+d+e+f)==n)&&((a==f&&b==e&&c==d)))
{
printf("%d\n",num);
}
}
}
return 0;
}
样本平均CPU时长46ms,枚举法虽然不容易犯错,但非常需要计算力。
稍后将进行优化。