科協裡最近很流行數字遊戲。某人命名了一種不降數,這種數字必須滿足從左到右各位數字成小於等於的關係,如 123,446。現在大家決定玩乙個遊戲,指定乙個整數閉區間 [a,b],問這個區間內有多少個不降數。
輸入格式
有多組測試資料。每組只含兩個數字 a,b,意義如題目描述。
輸出格式
每行給出乙個測試資料的答案,即 [a,b] 之間有多少不降數。
樣例input output
1 91 19918
資料範圍與提示
對於全部資料,1≤a≤b≤231−1。
簡單題,只要記得使位數上的數字進行排序
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ls (p<<1)
#define rs (p<<1|1)
#define ll long long
using
namespace std;
const
int maxn =
2e6+5;
const
int inf =
0x3f3f3f3f
;ll dp[50]
[15];
//dp[pos][pre]記錄了遍歷第pos為位時,前一位為pre時的狀態數
ll a[30]
,b[30];
// void init()
// }
ll dfs
(ll pos,ll pre,
bool limit)if(
!limit)
dp[pos]
[pre]
=ans;
//無限制更新
return ans;
}ll init
(ll n)
return
dfs(len -1,
0,1)
;}void
solve()
}int
main()
非負整數區間內含某數字的數的個數
群裡有人問了這個問題 然後被attack秒了orz 考慮數字dp 預處理v 第幾位 該位是否是目標數字 是否有目標數字 顯然數字除了0之外的求解過程是完全一致的 那麼我們特判0就可以了 include cstdio include cstring include iostream include a...
產生隨機小數 如果取到小數區間內的任一數字?
一位粉絲的需求,如果根據左側的小數區間,返回區間內的隨機小數?excel中存在兩個隨機函式,一是randbetween,但其返回的是隨機整數,而不是小數 二是rand函式,返回0 1之間的隨機小數,兩者都無法直接產生需求的結果。既然是隨機,就必須得結合隨機函式。方法一,化小數為整數,再利用randb...
分塊 二分維護,求區間內數字出現的次數
如題,把區間分塊,對每個塊裡的數字排序,然後在塊裡二分查詢,複雜度理論是o n 1.5 logn csy菊苣說把塊的大小調整為n log2 n 複雜度可以降到o n sqrt n logn 然後我寫了組大隨機資料測試了一下,如果分塊大小是sqrt n 用了7.6s,分塊大小是n log2 n 時只用...