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 輸出格式 ...