Misasagi_Ame 2016-06-10 13:52 采纳率: 0%
浏览 2255

关于水仙花数的快速算法

我的代码如下:

 #include<iostream>
#include<set>
using namespace std;
typedef set<int>::iterator set_iter;
const int MIN=100;
const int MAX=999;
int pow3(const int &a){
    return a*a*a;
}
int daffodil(){
    set<int,less<int> > daff;
    int a,b;
    for(int i=0;i<10;i++)
        for(int j=0;j<10;j++)
            for(int k=0;k<10;k++){
                a=pow3(i)+pow3(j)+pow3(k);
                b=i*100+j*10+k;
                if(a>MAX)break;
                if(a>=MIN&&a<=MAX&&a==b)
                daff.insert(a);
            }
    for(set_iter it=daff.begin();it!=daff.end();it++)
        cout<<(*it)<<" ";
    return 0;
}
int main(){
    daffodil();
    return 0;
} 

不知道这个算法相对于 从100到999的循环比起来那种更快 求大神分析下?
还有就是用set是否会影响运算速度....
还想问问如果要参加竞赛的话是否要尽量避免使用STL的容器.....

  • 写回答

1条回答 默认 最新

  • devmiao 2016-06-10 20:45
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料