藍橋杯PREV 3 帶分數 全排列 剪枝

2021-09-12 22:16:09 字數 910 閱讀 6900

問題描述

100 可以表示為帶分數的形式:100 = 3 + 69258 / 714。

還可以表示為:100 = 82 + 3546 / 197。

注意特徵:帶分數中,數字1~9分別出現且只出現一次(不包含0)。

類似這樣的帶分數,100 有 11 種表示法。

輸入格式

從標準輸入讀入乙個正整數n (n<1000*1000)

輸出格式

程式輸出該數字用數碼1~9不重複不遺漏地組成帶分數表示的全部種數。

注意:不要求輸出每個表示,只統計有多少表示法!

樣例輸入1

樣例輸出1

樣例輸入2

樣例輸出2

解題思路

用全排列函式(dfs也可以,全排列函式更方便)產生1~9的全排列,然後對每個序列列舉n1  n2 n3 的位數,通過剪枝減少無意義的運算。

ac**

#include #include using namespace std;

int a[9],sum,n;

void judge()

if((n1+n2/n3) == n && n2%n3 == 0)

sum++;

} }}int main()

while(next_permutation(a,a+9));

cout << sum << endl;

return 0;

}

藍橋杯 PREV 3 帶分數

歷屆試題 帶分數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 100 可以表示為帶分數的形式 100 3 69258 714。還可以表示為 100 82 3546 197。注意特徵 帶分數中,數字1 9分別出現且只出現一次 不包含0 類似這樣的帶分數,100 有 11 種表示法。輸入格...

藍橋杯 PREV 3 帶分數

資源限制 時間限制 1.0s 記憶體限制 256.0mb 100 可以表示為帶分數的形式 100 3 69258 714。還可以表示為 100 82 3546 197。注意特徵 帶分數中,數字1 9分別出現且只出現一次 不包含0 類似這樣的帶分數,100 有 11 種表示法。從標準輸入讀入乙個正整數...

藍橋杯真題 PREV 3 帶分數(全排列 列舉)

帶分數 試題 歷屆試題 帶分數 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 100 可以表示為帶分數的形式 100 3 69258 714。還可以表示為 100 82 3546 197。注意特徵 帶分數中,數字1 9分別出現且只出現一次 不包含0 類似這樣的帶分數,100 有...