思路:
1.暴力求出9個數的全排列,用num[i]陣列儲存每個數字。
2.對全排列劃分為三部分,依次進行判斷。
難點:劃分為三個數,因為a,b,c三個數必須存在c最小可能為1,b也可能是個位數,那麼a最多就是7位數。
第一層迴圈是a的位數的擷取,第二層是b的位數的擷取,b要緊接著a,所以j = i + 1開始,b至少給c留一位,故終點為8.
所以對a從1到7迴圈擷取,b必須大於c,b從a的後面一位擷取,i+1到j。c從j + 1到終點9.
#include
using
namespace std;
typedef
long
long ll;
bool vis[10]
;int num[10]
;int n;
int cnt;
ll calc
(int x,
int y)
return res;
}void
dfs(
int n)
}return;}
//求全排列,對應9個數每次選數都有9種選擇
for(
int i=
1;i<=
9;i++)}
intmain()
帶分數(藍橋杯第四屆)
7 3 帶分數 qdulq 16 分 100 可以表示為帶分數的形式 100 3 69258 714 還可以表示為 100 82 3546 197 注意特徵 帶分數中,數字1 9分別出現且只出現一次 不包含0 類似這樣的帶分數,100 有 11 種表示法。從標準輸入讀入乙個正整數n n 1000 1...
第四屆藍橋杯程式設計題 帶分數
分析 這道題初看起來第一感覺就是用暴力破解應該可以搞定,但是時間複雜度應該會相當可觀,仔細觀察,會發現這道題無非是全排列的一種運用,把等式定義為 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 ...