【分塊打表】bzoj 3758 數數
阿新 • • 發佈:2017-08-06
inpu 綜合 前綴和 lan 不能 art -1 esc ref
【題目描述】
Description
神犇最近閑來無事,於是就思考哲學,研究數字之美。在神犇看來,如果一個數的各位能夠被分成兩個集合,而且這兩個集合裏的數的和相等,那麽這個數就是優美的(具體原因就只有神犇才知道了)。現在神犇在思考另一個問題,在區間[a,b]中有多少個數是優美的?這個問題對於神犇來說很簡單,相信對於你來說也不難。
Input
輸入只有一行,包含兩個整數a和b。
Output
輸出只有一行,包含一個整數,代表區間[a,b]中優美的數的個數。
Sample Input
1 11
Sample Output
1
HINT
1<=A<=B<=10^9
【思路】
- 對於每個數x,可以log(x)復雜度內(二進制背包問題)求出這個數是不是完美數
- 對於[a,b]內有多少個完美數,可以由前綴和sum[a]-sum[b-1]得出
- 考慮到a=1,b=1e9時不能在線算,所以要打表預處理
- 考慮到打表要打1e9,顯然不允許
- 因為要求的是前綴和,所以我們可以分塊求和,整塊的由表得出,最右邊不在整塊的暴力(前面已經說了單個復雜度很小)
- 綜合考慮時間和空間,1e9個數分成1e3塊(要考慮到編譯超時的問題?),空間1e3可以,時間1e6logx也可以
【AC】
http://blog.csdn.net/PoPoQQQ/article/details/41551913
【分塊打表】bzoj 3758 數數