波動數列 藍橋杯

2021-06-21 03:24:43 字數 722 閱讀 1947

這是2023年第五屆藍橋杯全國軟體大賽預賽本科a組(c/c++組)第10題,也就是最後一題。

思路可以想得到,列舉和廣度優先搜尋,由於最後時間緊迫,簡單的計數還沒完成,謹以此文祭奠逝去的藍橋杯。

剛看這題,似乎摸不著頭腦,細細欣賞,似乎還可以實現。

由於資料量可能很大,這裡使用了long long型別。

輸入給出了所有數的和s,假設該數列的第乙個數為i,那麼它的取值範圍為[s - n * a, s + n * b]。

然後對列舉的每個數進行深度優先搜尋,就可以得到結果。

考試時由於在main()函式內重複定義了變數cnt,和全域性變數衝突,最後輸出的答案一直是0,可惜沒時間改了。

#include using namespace std;

long long n, s, a, b;

long long sum;

long long cnt = 0;

long long mo = 100000007;

int dfs(long long nn, long long rn) else }

dfs(nn + a, rn - 1);

dfs(nn - b, rn - 1);

sum -= nn;

}int main(void)

cout << cnt << endl;

return 0;

}

(全文完)

藍橋杯 波動數列

問題描述 觀察這個數列 1 3 0 2 1 1 2 這個數列中後一項總是比前一項增加2或者減少3。棟棟對這種數列很好奇,他想知道長度為 n 和為 s 而且後一項總是比前一項增加a或者減少b的整數數列可能有多少種呢?輸入格式 輸入的第一行包含四個整數 n s a b,含義如前面說述。輸出格式 輸出一行...

波動數列 藍橋杯

資料格式 輸入的第一行包含四個整數 n s a b,含義如前面說述。輸出一行,包含乙個整數,表示滿足條件的方案數。由於這個數很大,請輸出方案數除以100000007的餘數。例如,輸入 4 10 2 3 程式應該輸出 2 樣例說明 這兩個數列分別是2 4 1 3和7 4 1 2。資料規模與約定 對於1...

藍橋杯歷屆試題 波動數列

include include include include include include include include include include include include include include include include include include includ...