C++程序题救解

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:07:39
题目
打印所有的"水仙花数"(它是一个三位数,其各位数字立方等于该数本身).

这是个C++程序题,望高手能把它的步骤和设计思想写下来好吗?
谢谢
Compiling...
1.cpp
E:\樱桃小\1.cpp(2) : error C2501: 'usingnamespacestd' : missing storage-class or type specifiers
E:\樱桃小\1.cpp(13) : error C2065: 'cout' : undeclared identifier
E:\樱桃小\1.cpp(13) : warning C4554: '<<' : check operator precedence for possible error; use parentheses to clarify precedence
E:\樱桃小\1.cpp(13) : error C2065: 'endl' : undeclared identifier
E:\樱桃小\1.cpp(13) : warning C4552: '<<' : operator has no effect; expected operator with side-effect
执行 cl.exe 时出错.

我在执行5楼的兄弟的那个程序时,所出的错
请问是哪里错的呢?

如果我我就用穷举法
个位的取得方法是让这个数余10,得余数,
十位的取得方法是让这个数余100,再除10取得数,
百位的直接除以100,得取得的数。

我现在的电脑没有编译器没有MSDN,试着做一下,错误肯定多多。

int a,b,c;
for(i=100;i<1000;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<<\n;
}

-------
呵呵,鬼兄,这回你成我楼上的了。我怎么觉得效率上我的应该算好的呢:)因为我的嵌套少,还没有函数调用啊,至于算法上,你的也是每次组一次,我的也是拆一次,应该差不多啦!如果要是追求效率,你的那个应该把函数去掉,要不频频调用,反回,不如直接a*a*a来得直接高效。

1+2+3+4+5+6+7+8+9

#include<iostream>
usingnamespacestd;

inline int get3(int v);

void getValue()
{
int i=1,j=0,k=0;
for(;i<10;i++)
for(;j<10;j++)
for(;k<10;k++)
if(get3(i*100+j*10+k)==get3(i)+get3(j)+get3(k))
cout<<i*100+j*10+k<<endl;
}
int get3(int v)
{
return v*v*v;
}

楼上的可以通过,但是就效率来看,反过来遍历(把3位数字都套个循环)比楼上的要快的多呵呵