時間限制: 1000 ms 記憶體限制: 65536 kb
提交數: 3907 通過數: 2025
在所有的n
'>
n位數中,有多少個數中有偶數個數字3
'>3
?由於結果可能很大,你只需要輸出這個答案對12345
'>12345
取餘的值。
讀入乙個數n(n
≤1000
)'>n(n≤1000)
。輸出有多少個數中有偶數個數字3
'>
3。
2
73題解:
0001112
2233
3444
5556
6677
7888
999
仔細觀察,嗯....!!!! 我知道了,當位數是 1 的時候 , 有 9 個符合條件的。只有1個數字3不符合。
(因為根據題意,含有0個3也是含有偶數個3)
0123456
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 usingnamespace
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 其次,再考慮棋盤中從左下到右上斜線的座標關係,假設現在座標是...