乙個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,...