求阿姆斯状数,请教怎样减少用时!具体请看内容
关于阿姆斯状数问题,我已经写出了如何和运算,但是程式运行时间过长,希望能减少时间。求程式码,谢谢!
以下是我的程式码!
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
char str[256];
int x,y,i,j,t,n,sum;
cin>>x>>y;
if(x>y)
{ t=y ; y=x ; x=t ; }
for(i=x ; i<=y ; i++)
{
if(i/10 == 0)
{
cout<<i<<" ";
}
else
{
n = 1; sum = 0;
sprintf(str,"%d",i);
for(j=i ; j/10!=0 ; j=j/10)
n ++;
for(j=0 ; j<n ; j++)
{
sum += (int)pow((str[j]-'0')*1.0,n*1.0);
}
if(sum == i)
{
cout<<sum<<" ";//能否帮忙将输出的最后一个空格键删除?
}
}
}
return 0;
}