今天给大家讲一道初一数学140几都蒙了的题——阿姆斯特朗数。
对于阿姆斯特朗数大家都不陌生,阿姆斯特朗数也叫水仙花数,它的定义如下:若一个n位自然数的各位数字的n次方之和等于它本身,则称这个自然数为阿姆斯特朗数(Er~~这里由于本人还没学,所以重申一下定义)。
废话不多说,直接看题——let‘go;
题目描述
编程找出所有的三位数到七位数中的阿姆斯特朗数。阿姆斯特朗数也叫水仙花数,它的定义如下:若一个n位自然数的各位数字的n次方之和等于它本身,则称这个自然数为阿姆斯特朗数。例如,153(153=1X1X1+3X3X3+5X5X5)是一个三位的阿姆斯特朗数,8208则是一个四位的阿姆斯特朗数。
输入描述
无输入
输出描述
每行输出一个阿姆斯特朗数,按从小到大的顺序按行输出。
样例
输出
153 370 371 407 1634 8208 9474 54748 92727 93084 548834 1741725 4210818 9800817 9926315
本提就是一个基础的算术题,定义有些超前,但实现比较简单,我也就直接上代码了。
#include<cmath>
#include<cstdio>
#include<string>
#include<iomanip>
#include<iostream>
#include<algorithm>
using namespace std;
int a[10][9];
int main(){
for(int i=1;i<=9;i++){
a[i][1]=i;
for(int j=2;j<=7;j++){
a[i][j]=a[i][j-1]*i;
}
}
for(int i=100;i<=9999999;i++){
int cnt=0;
int x=i;
while(x!=0){
x=x/10;
cnt++;
}
int sum=0;
x=i;
while(x!=0){
sum+=a[x%10][cnt];
x/=10;
}
if(sum==i){
cout<<i<<endl;
}
}
return 0;
}
代码放这儿了 ,小罗请教一下大家,这个代码时间复杂度是多少呢?
评论区里留下,我期待你们的回答哟!!