第六屆藍橋杯校內選拔賽C C 高職組解題(6)

2021-06-27 08:32:29 字數 1722 閱讀 2872

形如:1/a 的分數稱為單位分數。

可以把1分解為若干個互不相同的單位分數之和。

例如:1 = 1/2 + 1/3 + 1/9 + 1/18

1 = 1/2 + 1/3 + 1/10 + 1/15

1 = 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + 1/15 + 1/35 + 1/45 + 1/231

等等,類似這樣的分解無窮無盡。

我們增加乙個約束條件:最大的分母必須不超過30

請你求出分解為n項時的所有不同分解法。

資料格式要求:

輸入乙個整數n,表示要分解為n項(n<12)

輸出分解後的單位分數項,中間用乙個空格分開。

每種分解法占用一行,行間的順序按照分母從小到大排序。

例如,輸入:

4程式應該輸出:

1/2 1/3 1/8 1/24

1/2 1/3 1/9 1/18

1/2 1/3 1/10 1/15

1/2 1/4 1/5 1/20

1/2 1/4 1/6 1/12

再例如,

輸入:5

程式應該輸出:

1/2 1/3 1/12 1/21 1/28

1/2 1/4 1/6 1/21 1/28

1/2 1/4 1/7 1/14 1/28

1/2 1/4 1/8 1/12 1/24

1/2 1/4 1/9 1/12 1/18

1/2 1/4 1/10 1/12 1/15

1/2 1/5 1/6 1/12 1/20

1/3 1/4 1/5 1/6 1/20

資源約定:

峰值記憶體消耗 < 256m

cpu消耗  < 2000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

只想到了暴力搜尋的方法**如下效率還不是很好歡迎交流

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

int n;

int count=0;

int counts=0;

double table[31][30];//表示從第n個數到之後連續m個數的和

void coutvector(vectord)

double sum=getvectorsum(d);//獲得當前佇列最大值

if((sum-(1.0/30.0))>1 )

if(d.size()==n)

if(d.size()>0) }

int k=2;

if(d.size()!=0)

k=d[d.size()-1]+1;

for(int i=k;i<=30;i++)

}int main()

cin>>n;

vector i;

dsf(i);

cout<<"總共計算了"<

第六屆藍橋杯校內選拔賽C C 高職組解題(2)

1 1 1 2 1 3 1 4 在數學上稱為調和級數。它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。但是,它發散的很慢 前1項和達到 1.0 前4項和才超過 2.0 前83項的和才超過 5.0 那麼,請你計算一下,要加多少項,才能使得和達到或超過 15.0 呢?請填寫這個整數。注...

第六屆藍橋杯校內選拔賽C C 高職組解題(4)

1193是個素數,對它迴圈移位後發現 1931,9311,3119也都是素數,這樣特徵的數叫 迴圈素數。你能找出具有這樣特徵的5位數的迴圈素數嗎?當然,這樣的數字可能有很多,請寫出其中最大的乙個。注意 答案是個5位數,不要填寫任何多餘的內容。答案99371 include include inclu...

第六屆藍橋杯校內選拔賽C C 高職組解題(7)

你一定聽說過 數獨 遊戲。如 圖1.png 玩家需要根據9 9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個同色九宮內的數字均含1 9,不重複。數獨的答案都是唯一的,所以,多個解也稱為無解。本圖的數字據說是芬蘭數學家花了3個月的時間設計出來的較難的題目。但對會使用計算機程式...