for a=0,9 do
for b=0,9 do
for c=0,9 do
if a*100+b*10+c + c*100+b*10+a == 1333 then
print(string.format("a:%d,b:%d,c:%d\n",a,b,c))
end
end
end
end
这个程序输出为无
为什么呢,因为如果abc为整数的话,那么abc+abc=1333是不可能的。这个算数类似于2abc=1333,1333/2 是个小数点,根本除不尽啊。也就是说a,b,c不可能是整数。
程序思路是这样的
#include
#define MAXDIGIT 1333
main()
{
int a, b, c,sum;
for(a = 1; a <= MAXDIGIT; ++a)
for(b = 1; b <= MAXDIGIT; ++b)
for(c = 1; c <= MAXDIGIT; ++c){
sum = a*b*c + c*b*a;
if(sum == MAXDIGIT) {
printf("%d %d,%d,%d\n",sum, a, b, c );
}
}
}
如果想输出检查的话你将1333改成1332试下对不对。
for(a=0;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
//把 abc cba 连接起来 转成整形 判断
if((a*100+b*10+c)+(c*100+b*10+a)==1333)
//打印 abc cba
}
}
}
楼上的应该是这样 不过我的话,可能会用100到999的循环搞定
999-100=899
10*10*10=1000,
好像我的方法会比较高效哦,呵呵
如果你的输出格式是abc cba那就是这个
#include
using namespace std;
int main()
{
int a, b, c, d, e;
for (a=0; a<10; a++)
{
for (b=0; b<10; b++)
{
for (c=0; c<10; c++)
{
if (a*100+b*10+c + c*100+b*10+a == 1333)
{
printf("%d%d%d %d%d%d\n", a, b, c,c,b,a);
}
}
}
}
system("pause");
return 0;
}
把4楼的改了下,适应c++
#include
using namespace std;
int main() {
int a, b, c, d, e;
for (a=0; a<10; a++) {
for (b=0; b<10; b++) {
for (c=0; 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;
}
这样的