藍橋杯 帶分數

2021-07-30 11:58:19 字數 1203 閱讀 6315

問題描述

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分成3部分,然後每次字典序排序,非常麻煩,後來看了網上的題解,覺得用dfs更容易去做。

首先取整數部分,然後取分母部分,輸入與整數的差乘以分母則為分子,只要滿足分子為取過整數和分母之後剩下的數字組成的要求,即為一種表示法。

整數部分取到n-2即可。n-1時,分子與分母要相等,不可能,捨棄。n時,分子為0,不可能,捨棄。

**如下:

[html]view plain

copy

#include

<

cstdio

>

#include<

cstring

>

int flag1[10],flag2[10];  

int ls,v,num=0

;  int check(int n)   //檢查該數字組成中是否有重複的數字,若沒有,將出現過的數字做標記,並返回1,否則返回0;   

ls=9

-ls;     //儲存未被標記的數字的個數   

return 1;  

}  int judge(int n)    //check功能相同,檢查是否有重複,並返回該數字長度   

return len;  

}  void dfs(int len,int x)   //x作為分母 len作為分母的長度   

if(len<

=ls/2)  

for(int i=1

;i<

10;i++)  

}  }  int main()  

}  printf("%d",num);  

}  

藍橋杯 帶分數

問題描述 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 輸出格式 ...

藍橋杯 帶分數

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