藍橋杯 歷屆試題 帶分數 (簡單搜尋 剪支)

2021-09-11 00:00:54 字數 713 閱讀 6941

題目鏈結

題意:給定乙個數m,問用1-9這9個數,每個數只能出現一次,能組成多少種帶分數且值等於m

思路:1-9每個數只能出現一次,很明顯的全排列問題,dfs即可解決。難點是如何將這些排列分割成3塊,也就是需要切2刀。

假設帶分數的形式為a+b/c.那麼它必須滿足一下幾點。

1. a 2. b%c==0

3. c!=0

那麼我們可以這樣分割,先嘗試分割出a,a可以分割的位數為1到8(因為b,c都必須保留給他們一位),分割好a以後,先判斷一下,如果不符合,那麼直接return.

如果a滿足,那麼考慮分割第2刀,第二刀分割有點講究,那就是剩下的部分必須分給b,c並且保證b>c,那麼b至少得分剩餘部分的一半及以上了。

最後檢驗一下是否滿足,b>c&&b%c==0&&a+b/c==m即可。

**:

#include using namespace std;

int f[10];

int a[100];

int ans;

int sum(int a,int st,int ed)

return ans;

}void check(int a,int n,int m)}}

}void dfs(int x,int n,int m)

for(int i=1;i<=9;i++)

}}int main()

藍橋杯歷屆試題 帶分數

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

藍橋杯 歷屆試題 帶分數

問題描述 100 可以表示為帶分數的形式 100 3 69258 714。還可以表示為 100 82 3546 197。注意特徵 帶分數中,數字1 9分別出現且只出現一次 不包含0 類似這樣的帶分數,100 有 11 種表示法。輸入格式 從標準輸入讀入乙個正整數n n 1000 1000 輸出格式 ...

歷屆試題 帶分數 (藍橋杯)

問題描述 100 可以表示為帶分數的形式 100 3 69258 714。還可以表示為 100 82 3546 197。注意特徵 帶分數中,數字1 9分別出現且只出現一次 不包含0 類似這樣的帶分數,100 有 11 種表示法。輸入格式 從標準輸入讀入乙個正整數n n 1000 1000 輸出格式 ...