試題 歷屆試題 帶分數

2021-10-17 03:24:31 字數 1500 閱讀 3321

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

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

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

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

輸入格式

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

輸出格式

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

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

樣例輸入1

100樣例輸出1

11樣例輸入2

105樣例輸出2

6思路:-題目中要求數字1-9分別出現且只出現一次,所以我們把數字1-9分別儲存在陣列a裡,然後用1-9的全排列來充填題目中的位數。c++stl庫里有乙個求下乙個排列的函式next_permutation,我們可以方便呼叫。

為了方便大家理解,我們先看一下這個函式的使用方法,例如要輸出一組數的全排列。

#include

#include

using

namespace std;

intmain()

while

(next_permutation

(p,p+n));

// 庫函式求下乙個序列

回到題目當中,因為我們並不知道加號左邊是幾位數,以及被除數和除數的位數也不知道。所以我們採用暴力列舉的思路。

#include

using

namespace std;

#include

#include

#include

int n,a[10]

,count1=0;

inttotal

(int n)

//統計輸入的數的位數

return count1;

}int

main()

for(

int b1=m+i,p=

1;b1>i;b1--

,p=p*10)

//統計除號之前位數部分

for(

int c1=

9,p=

1;c1>i+m;c1--

,p=p*10)

//統計剩餘的除號之後的位數部分 if(

(sum1+sum2/sum3)

==n)

//如果滿足條件,答案數+1

}while

(next_permutation

(a+1

,a+10))

;//求下乙個排列 }}

printf

("%d"

,ans)

;return0;

}

試題 歷屆試題 帶分數

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

試題 歷屆試題 帶分數

試題 歷屆試題 帶分數 資源限制時間限制 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 輸出格式 ...