藍橋杯 花朵數

2021-06-29 14:21:41 字數 1236 閱讀 9258

乙個n位的十進位制正整數,如果它的每個位上的數字的n次方的和等於這個數本身,則稱其為花朵數。

例如:當n=3時,153就滿足條件,因為 1^3 + 5^3 + 3^3 = 153,這樣的數字也被稱為水仙花數(其中,「^」表示乘方,5^3表示5的3次方,也就是立方)。

當n=4時,1634滿足條件,因為 1^4 + 6^4 + 3^4 + 4^4 = 1634。

當n=5時,92727滿足條件。

實際上,對n的每個取值,可能有多個數字滿足條件。

程式的任務是:求n=21時,所有滿足條件的花朵數。注意:這個整數有21位,它的各個位數字的21次方之和正好等於這個數本身。

如果滿足條件的數字不只有乙個,請從小到大輸出所有符合條件的數字,每個數字佔一行。因為這個數字很大,請注意解法時間上的可行性。

優化:不管乙個數是多少位,它都是由0~9這10個數字組成,所以我們可以先分別求出這10個數的各自的21次方,

又因為10個9的21次方之和超過了21位數,所以從9個9,12個8開始一次往下運算即可

#include

#include

#include

#include

using namespace std;

int a[10][21],count[100][21],cnt=0;

void get()//將0-9這10個數的每個數的21次方存入a陣列}}

}void cal()

,sort[21]= ,e[10]= ;

for(int i=0; i<21; i++) //求b中21個數的21次方之和

}if(flag==0)break;

}if(sum[0]==0) flag=0;//位數不夠21位捨棄

if(flag==1)//位數正好21位看看兩個數是不是相等}}

if(flag==1)//兩個數相等就存起來

//找下乙個b[n]  (找下乙個b的找法我是一點都不理解啊)

藍橋杯 花朵數

花朵數 花朵數是指乙個數的各個位數的該數的位數次方相加等於該數本身 例 153 1 3 5 3 3 3 程式的任務是 求n 21時,所有滿足條件的花朵數。注意 這個整數有21位,它的各個位數字的21次方之和正好等於這個數本身。如下 public class main public static vo...

藍橋杯 花朵數 解題報告

乙個n位的十進位制正整數,如果它的每個位上的數字的n次方的和等於這個數本身,則稱其為花朵數。例如 當n 3時,153就滿足條件,因為 1 3 5 3 3 3 153,這樣的數字也被稱為水仙花數 其中,表示乘方,5 3表示5的3次方,也就是立方 當n 4時,1634滿足條件,因為 1 4 6 4 3 ...

藍橋杯 冰雹數

冰雹數 任意給定乙個正整數n,如果是偶數,執行 n 2 如果是奇數,執行 n 3 1 生成的新的數字再執行同樣的動作,迴圈往復。通過觀察發現,這個數字會一會兒上公升到很高,一會兒又降落下來。就這樣起起落落的,但最終必會落到 1 這有點像小冰雹粒子在冰雹雲中翻滾增長的樣子。比如n 9 9,28,14,...