題目鏈結
題意:給定乙個數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 輸出格式 ...