输入 A,B 输出 [A,B] 中的所有阿姆斯特朗数 1 和 1<=A<=B<=10^7

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

本文关键字:lt 输出 阿姆斯特朗 输入      更新时间:2023-10-16

这是我关于 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 的 pow 初始化的向量,...9 到数字的效力,而是在每次交互中重新计算。