close
Content
所謂 Armstrong number 指的是一個 n 位數的整數,它的所有位數的 n 次方和恰好等於自己。
如;1634 = 14+64+34+44
請依題目需求在一定範圍內找出該範圍內的所有 armstrong numbers.
Input
輸入共一行包含兩個數字n, m(n<m, n>0, m<=1000000),代表所有尋找 armstrong number 的範圍
Output
將所有範圍內的 armstrong number 依序由小到大輸出,如果沒有找到請輸出 none.
Sample Input #1
100 999
Sample Output #1
153 370 371 407
Sample Input #2
10 99
Sample Output #2
none
測資資訊:
記憶體限制: 512 MB
公開 測資點#0 (14%): 1.0s , <1K
公開 測資點#1 (14%): 1.0s , <1K
公開 測資點#2 (14%): 1.0s , <1K
公開 測資點#3 (14%): 1.0s , <1K
公開 測資點#4 (14%): 1.0s , <1K
公開 測資點#5 (15%): 1.0s , <1K
公開 測資點#6 (15%): 1.0s , <1K
公開 測資點#0 (14%): 1.0s , <1K
公開 測資點#1 (14%): 1.0s , <1K
公開 測資點#2 (14%): 1.0s , <1K
公開 測資點#3 (14%): 1.0s , <1K
公開 測資點#4 (14%): 1.0s , <1K
公開 測資點#5 (15%): 1.0s , <1K
公開 測資點#6 (15%): 1.0s , <1K
C++
/* 要注意的是把每一個數輸進arr的方式 利用 arr[d++]=temp%10; temp/=10; 例如 1634 輸進去就是 arr[7]={4,3,6,1,None,None,None}; 那裡面的d會變成4 (d++代表先放進去後d再加一) 32行for (int i = 0; i < d; i++) 他會跑0,1,2,3,剛剛好就是四位數 */ #include <iostream> #include <math.h> using namespace std; int main() { int n,m; int ans=0; //計算有幾個阿姆斯壯數 cin>>n>>m; for (int i = n; i <= m ; i++) { //要把n~m的每一位數字放進arr裡 int arr[7]; int temp=i; int d=0; while (temp) { arr[d++]=temp%10; temp/=10; } int sum=0;//嘗試算每個數字是否為阿姆斯壯數 for (int i = 0; i < d; i++) { sum+=pow(arr[i],d); } if (sum==i){ ans++; cout<<i<<" "; } } if (ans==0)//若沒有阿姆斯壯數就輸出"none" { cout<<"none"; } }
python
n,m=map(int,input().split()) flag=False for num in range(n,m+1): arr=[int(x) for x in str(num)] len_arr=len(arr) #print(arr) ans=0 for i in arr: ans+=pow(i,len_arr) if ans==num: flag=True print(ans,end=" ") if flag==False: print("none")
文章標籤
全站熱搜
留言列表