《資訊學奧賽一本通》 位數問題 題解

2022-02-06 06:58:15 字數 1653 閱讀 3858

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 3907     通過數: 2025 

在所有的n

'>

n位數中,有多少個數中有偶數個數字3

'>3

?由於結果可能很大,你只需要輸出這個答案對12345

'>12345

取餘的值。

讀入乙個數n(n

≤1000

)'>n(n≤1000)

。輸出有多少個數中有偶數個數字3

'>

3。

2

73

題解:

000

1112

2233

3444

5556

6677

7888

999

仔細觀察,嗯....

!!!! 我知道了,當位數是 1 的時候 , 有 9 個符合條件的。只有1個數字3不符合。

(因為根據題意,含有0個3也是含有偶數個3)

012

3456

789

那麼接下來,數字3 是含有奇數個3(不符條件false) 的 但是 數字33 是含有 偶數個3 (符合條件true)

又就是說 數字3 在增加了一位數後 變成了符合條件的 數字33。

符合條件的數的個數 為 t[0]

不符合條件的數的個數為 f[0]

t[0] 與 f[1] 是有關聯的,我們就需要2個陣列。

再由於要記錄是第n位數。

所以引入二維陣列,f[i][0] 表示 第 i 位數的時候,符合條件的數的個數。

再仔細觀察,發現 1(true) 分別和 0,1,2,4,5,6,7,8,9 結合 可以變成 10,11,12,14,15,16,17,18,19 ( true )(9個)

和 3 結合變成 13 ( false )(1個)

同理:3 (false) 與 3 -> 33 (true)(1個)

與除3外的其他數結合 -> (false)(9個)

就可以列出遞推式:

t[i] = (t[i-1]*9 + f[i-1])%12345;

f[i] = (t[i-1] + f[i-1]*k=9)%12345;

等等...然後...

因為012不構成三位數,也就是說 第 n 位(最後一位的時候),不能把0算進去。

所以要把*9變成*8

#include using

namespace

std;

long

long t[1001],f[1001

];int

n;int

main()

cout

<< t[n]

}

資訊學奧賽一本通提高篇題解

感謝齊工大oj提供測試環境 1.1 貪心 活動安排 區間貪心,對於區間,按照右端點公升序排序,然後選擇離前乙個區間最近的不重合區間 種樹 對於區間,按照右端點公升序排序,讓樹盡量種在靠右的地方,用陣列標記狀態 噴水裝置 1.2 二分 憤怒的牛 最小值最大,二分距離mid 對於mid,如果距離大於mi...

《資訊學奧賽一本通》 昆蟲養殖 題解

科學家在熱帶森林中發現了一種特殊的昆蟲,這種昆蟲的繁殖能力很強。每對成蟲過x個月產y對卵,每對卵要過兩個月長成成蟲。假設每個成蟲不死,第乙個月只有一對成蟲,且卵長成成蟲後的第乙個月不產卵 過x個月產卵 問過z個月以後,共有成蟲多少對?0 x 20,1 y 20,x z 50。x,y,z的數值。過z個...

資訊學奧賽一本通八皇后問題解析

首先要總結出8 8棋盤中從左上到右下斜線的座標關係,假設現在座標是 1,1 2,2 i,j 8,8 你會發現i j的差為0,將這個i與j相減擴散到整個棋盤,會得到下面這張圖,及i j的結果範圍是 7,7 i j 7的結果範圍就是 0,14 其次,再考慮棋盤中從左下到右上斜線的座標關係,假設現在座標是...