數字dp就是把數拆成乙個乙個的,然後,看 上一位如果是6的話,這一位就不能是2,這個數加上往下遞減 所得到的總數就是結果。
其中有一點就是limit,資料的範圍很可能不是整數,就用乙個limit,看上一位是否達到了最大值,如果達到了最大值,這一位的範圍就是(0-最大值),再往下傳遞。
總之三個引數,len,if6,limit。
其中用到了乙個記憶化搜尋,要注意是沒到極限的時候,傳遞結果,如果到了就不能傳遞了。
起始時 limit 設為true,到達極限 。
杭州人稱那些傻乎乎粘嗒嗒的人為62(音:laoer)。
杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。
不吉利的數字為所有含有4或62的號碼。例如:
62315 73418 88914
都屬於不吉利號碼。但是,61152雖然含有6和2,但不是62連號,所以不屬於不吉利數字之列。
你的任務是,對於每次給出的乙個牌照區間號,推斷出交管局今次又要實際上給多少輛新的士車上牌照了。
輸入的都是整數對n、m(0對於每個整數對,輸出乙個不含有不吉利數字的統計個數,該數值佔一行位置。
input
1 1000 0
1 #include2 #include3 #includeview code4 #include5 #include6 #include
7 #include8 #include9 #include10 #include11
using
namespace
std;
12 typedef long
long
ll;13
const
int n = 1010;14
intn, m;
15int digit[20
];16 ll dp[20][2
];17 ll dfs(int len, bool if6, bool
limit)
1830
if (!limit) dp[len][if6] =cnt;
31return
cnt;32}
33ll solve(ll num)
3441
return dfs(k,false,true
);42}43
intmain()
4450
return0;
51 }
n範圍內尋找重複數
題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 可以用set直接判斷,時間複雜度為o n 但是實際是...
LeetCode 1067 範圍內的數字計數
給定乙個在 0 到 9 之間的整數 d,和兩個正整數 low 和 high 分別作為上下界。返回 d 在 low 和 high 之間的整數 現的次數,包括邊界 low 和 high。示例 1 輸入 d 1,low 1,high 13輸出 6 解釋 數字 d 1 在 1,10 11,12 13 現 6...
範圍內的拖拽事件
粉色div在 父級div 範圍內拖拽,不能移動出div範圍 1,先實現拖拽 獲取標籤物件 var obox document.queryselector box var oinner document.queryselector inner 獲取父級標籤,margin left 和 border l...