c++ - input a,b output all armstrong numbers in [a,b] in 1s and 1<=a<=b<=10^7

标签 c++

这是我关于c++的代码 我在我学校的 IDE 上做,当我在上面运行代码时。它有 10 个测试来运行程序,它说只有 8 个测试正确,2 个测试超出时间限制 因为它允许程序在 1 秒内运行所以我想问他们是否有另一种方法可以让我的程序运行得更快。我是堆栈溢出的初学者所以我不习惯这样做如果有任何错误请告诉我谢谢你

#include <bits/stdc++.h>
#include <cmath>
using namespace std;
int main()
    long long a,b;
cin>>a>>b;
for(long long i=a;i<=b;i++){
    int digit=0;
    long long number=i,sum=0;
    while(number!=0){
        number=number/10;
        digit++;
    }
    number=i;
    while(number!=0){
        sum=sum+(pow((number%10),digit));
        number=number/10;
    }
    number=i;
    if(number==sum){
        cout<<number<<" ";
    }
}
}

最佳答案

可能使用以 10 为底的对数,如果您使用以 10 为底的对数 trunc 加上一个数字的 1,您将获得位数。并使用用 0,1,2,...9 的 pow 初始化的 vector 来计算效力,而不是在每次交互时重新计算。

关于c++ - input a,b output all armstrong numbers in [a,b] in 1s and 1<=a<=b<=10^7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58434544/

相关文章:

c++ - 令人困惑的私有(private)变量访问

C++ 作用域运算符分组?

c++ - 从类型列表创建 vector 元组

c++ - 使用 2D vector 创建简单的扫雷应用程序

c++ - 为什么这个循环不循环?

c++ - 为什么在这种情况下需要模板消歧器?

c++ - 用它的索引范围打包元组

c++ - 使用 malloc 时从 `void*' 到 `char*' 的无效转换?

c++ - make_shared<>() 中的 WKWYL 优化是否会为某些多线程应用程序引入惩罚?

c++ - DXGI AcquireNextFrame 仅在 20ms (50fps) 后才接收下一帧,是否可以加速到 10ms?