一个算法有关问题

一个算法问题我遇到了这样一个问题.一个3位数假设为abc,a为百位,b为十位,c为个位.求从100到999之间共有多

一个算法问题
我遇到了这样一个问题.一个3位数假设为abc,a为百位,b为十位,c为个位.求从100到999之间共有多少个三位数使它满足ABC等于A的三次方加B的三次方加C的三次方.
我写的是这样的:#include <iostream>
                                using   namespace   std;
                                  int   main()
{
        int   a,b,c,i;
        i=a*100+b*10+c;
        for(a=1,b=0,c=0,i=100;i <=999;i++)
        {
              a=i/100;
              b=(i%100)/10;
              c=i%100%10;
              if(i==a*a*a+b*b*b+c*c*c)
              {
                        cout < < "这些数为   " < <i < <endl;  
                                                            }                                                
                                                              }
                  system( "pause ");
                  return   0;                                            
       
        }
但我觉得这样写的不够规范,虽然能够执行.有没有高手把这段代码改一下.或提供一种更好的算法,用c的变化带动其他变量的变化.这样可以写出不受3位数的限制.在任何范围内的数值都能算得出.谢谢!

[解决办法]
for(a = 1; a < 10; ++a)
for(b = 0; b < 10; ++b)
for(c = 0; c < 10; ++c)
if(a*a*a + b*b*b + c*c*c == 100*a + 10*b + c)
{
...
}
[解决办法]
把你的格式改了下:

#include <iostream>
using namespace std;

int main()
{
int a = 0;
int b = 0;
int c = 0;
int i = 0;

i = a*100 + b*10 + c;

a=1;
for( i=100;i <=999;i++){
a = i / 100 ;
b = ( i % 100 ) / 10;
c = i % 100 % 10;

if( i == ( a*a*a + b*b*b +c*c*c ) ){
cout < < "这些数为 " < <i < <endl;
}
}

system( "pause ");
return 0;
}
[解决办法]
强烈支持adlay(www.adintr.com)(无可奈何天)
for(a = 1; a < 10; ++a)
for(b = 0; b < 10; ++b)
for(c = 0; c < 10; ++c)
if(a*a*a + b*b*b + c*c*c == 100*a + 10*b + c)
{
...
}
可以改为
int a3 = 0;
int b3 = 0;

for(a = 1; a < 10; ++a)
{
a3 = a*a*a;
for(b = 0; b < 10; ++b)
{
b3 = b*b*b;
for(c = 0; c < 10; ++c)


if(a3 + b3 + c*c*c == 100*a + 10*b + c)
{
...
}
}
}
[解决办法]
/*
这个应该能满足你的需求,但是这样做没有多大的必要性,为什么这么说你自己好好看一下就知道了
*/
#include <iostream>
#defineMaxsize10
using namespace std ;

intgetN( intN ) ;

intmain()
{
intNum ; //输入你想要查询的最大值
cout < < "Num : " ;
cin > > Num ;
for( inti = 100 ; i < Num ; i++ )
{
//如果满足条件就输出
if( getN( i ) )
cout < < "这些数为 " < < i < < endl ;
}
return0 ;
}

intgetN( intN )
{
intList[ Maxsize ] = { 0 } ;
intpointer = 0 ; //一个记录数组下标的变量
intSum = 0 ; //计算机整数各个位置的立方和
intTemp = N ; //一个变量记录传下来N值
//分离各个位置,并把其存到数组里面
while( N )
{
List[ pointer++ ] = N % 10 ;
N /= 10 ;
}
//计算机个位置的立方和
for( inti = 0 ; i < pointer ; i++ )
{
Sum += List[ i ] * List[ i ] * List[ i ] ;
}
//和传入的值进行比较
if( Temp == Sum )
return1 ;
else
return0 ;

}
[解决办法]
#include <iostream>
上面是个标准库
不需要用using namespace std;