藍橋杯 立方和等式 數的全排列

2021-06-29 02:56:09 字數 1008 閱讀 2902

考慮方程式:a^3 + b^3 = c^3 + d^3

其中:「^」表示乘方。a、b、c、d是互不相同的小於30的正整數。

這個方程有很多解。比如:

a = 1,b=12,c=9,d=10 就是乙個解。因為:1的立方加12的立方等於1729,而9的立方加10的立方也等於1729。

當然,a=12,b=1,c=9,d=10 顯然也是解。

如果不計abcd交換次序的情況,這算同乙個解。

你的任務是:找到所有小於30的不同的正整數解。把a b c d按從小到大排列,用逗號分隔,每個解占用1行。比如,剛才的解輸出為:

1,9,10,12

不同解間的順序可以不考慮。

對於這種題目,首先我們要做的是預處理,因為一共只有30個數字,所以可以事先將1-30中的每個數字求出其立方然後儲存起來,便於後面運算。然後,我們對這30個數字取四個進行全排列,總共就是p(30,4)種可能,其實還是很少的,所以列舉應該不會出現大問題,所以問題的關鍵是怎樣求全排列,首先,我們定義兩個陣列,cubic和used,分別代表那三十個數的立方和每個數字是否被使用,然後,我們通過乙個遞迴程式,遞迴總共四層,用count來控制,每一層代表乙個加數,temp用來臨時儲存這四個數,每使用乙個數,就將這個數標記一下,別忘了在回溯的時候解除標記,這樣就可以無重複全排列了,取出四個數之後,判斷一下等式是否成立,如果成立並且之前沒有出現過的話,就將這組解存到result中,最後輸出result。

#include#include#include#includeusing namespace std;

int cubic[31];

bool used[31];

int result[100][4];

int temp[5];

int p,q;

void init()

memset(used,false,sizeof(used));

}bool search()

{ int i;

sort(temp,temp+5);

for(i=0;i

藍橋杯 除去立方數

1.除去次方數 自然數的平方數是 1 4 9 16 25 自然數的立方數是 1 8 27 64 125 自然數的 4次方數是 1 16 81256 這些數字都可以稱為次方數。1 10000 中,去掉所有的次方數,還剩下多少個數字?參 9875 這個題的次方要設定到從2開始,因為否則的話會把1次方的也...

藍橋杯 排列問題 全排列

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 求乙個0 n 1的排列 即每個數只能出現一次 給出限制條件 一張n n的表,第i行第j列的1或0,表示為j 1這個數不能出現在i 1這個數後面,並保證第i行第i列為0 將這個排列看成乙個自然數,求從小到大排序第k個排列。資料規模和約...

藍橋杯 立方和

小明對數字中含有2 0 1 9的數字很感興趣,在1到40中這樣的數包括1 2 9 10至32 39和40,共28個,他們的和是574,平方和是14362,立方和是400816。請問,在1到2019中,所有這樣的數的立方和是多少?我們需要對1 2019中的每個數進行判斷,思路為 對於某個數來說,我們先...