第四屆省賽第九題 帶分數(程式設計)

2021-09-08 21:17:32 字數 975 閱讀 1615

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

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

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

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

題目要求:

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

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

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

例如:使用者輸入:

100程式輸出:

11再例如:

使用者輸入:

105程式輸出:

6資源約定:

峰值記憶體消耗 < 64m

cpu消耗  < 3000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

答案:(回溯全排列)

#include#includeusing namespace std;

string a[370000];

int n;

void qpl(string s)//全排列

for(i=0;ifor(j=1;j<=len;++j)

for(k=1;k<=(9-j)/2;++k)

for(int i1=0;i1for(int i1=0;i1if(m==x+y/z&&y%z==0)g++;

//cout<} cout

}

第四屆藍橋杯程式設計題 帶分數

分析 這道題初看起來第一感覺就是用暴力破解應該可以搞定,但是時間複雜度應該會相當可觀,仔細觀察,會發現這道題無非是全排列的一種運用,把等式定義為 n a b c 則abc組合在一起就是1到9的乙個全排列,所以可以把問題轉換成對於乙個9位數的數字,如何將其劃分為a b c三部分,使得其滿足n a b ...

帶分數 第四屆藍橋杯省賽C B C組

1.先列舉全排列 2.列舉位數 3.判斷是否滿足要求 這道題也就是n a b c,求出符合要求的abc的方案數。進行優化時,可以對等式進行改寫,改寫成 b cn ca。include include include includeusing namespace std const int n 30 ...

帶分數(藍橋杯第四屆)

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