这种题重点不在写代码,而在于算法,完全是数学题。
因为abc + cba = 101(a+c) + 20b=1333
很明显,1333中个位数的3必然来自101(a+c),所以a+c要么等于3,要么是13.
如a+c为3,那么20b=1030,b不是一位数,不成立。
如a+c为13,那么20b=1030-1010=20,所以b=1
所以组合很简单了, a+c=13,同时b=1就行。这样再枚举,效率高多了。
#include
#include
main()
{
int a,b,c;
for(a=3;a<10;a++)
for(b=0;b<10;b++)
for(c=3;c<10;c++)
if(a*100+b*10+c+c*100+b*10+a==1333)
printf("%d,%d,%d\n",a,b,c);//这一句出问题了 & 是取地址的意思
system("pause");
return 0;
}
因为printf("%d,%d,%d\n",&a,&b,&c);
&a,&b,&c是打印他们的地址
printf("%d,%d,%d\n",a,b,c);就可以了
btw:为什么a,b初始化为1,b初始化为0?
int a,b,c,i,j,k;
for(i=3;i<10;i++)
{
a=i;
for(j=0;j<10;j++)
{
b=j;
for(k=3;k<10;k++)
{
c=k;
if(101*a+20*b+101*c==1333)
printf("%d%d%d\n",a,b,c);
}
}
}
system("pause");
return 0;
把输出语句中的&去掉