求a~b中不包含49的數的個數. 0 < a、b < 2*10^9
思路:數字dp, dp[i][1]表示第i+1位為4時第i位能構成的合法數字數量。dp[i][0]表示第i+1位不為4時第i位能構成的合法數字數量。
#include #include #include #include using namespace std;
int a, b;
int num[20], dp[20][2];
int dfs(int pos, bool state, bool limit)
if (!limit && dp[pos][state] > 0)
int result = 0;
int up = limit? num[pos] : 9;
for (int i = 0; i <= up; i++)
result += dfs(pos - 1, i == 4, limit && i == up);
} if (!limit)
return result;
}int solve(int x)
return dfs(pos - 1, false, true);
}int main(int argc, const char * argv)
面試題49 醜數
題意 把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。思路 暴力每個數,判斷是不是醜數,直到找到第n個醜數。這個有點慢,不考慮 不能暴力所有數,我們考慮暴力醜數。假設陣列...
面試題49 醜數
一 暴力法 從1開始對每乙個數進行判斷,是否可以連除2,3,5得到1,效率比較低 class solution return number bool isugly int n 二 以空間換取時間的做法 思路 把每乙個醜數都列出來。醜數肯定是2,3,5的倍數,所以每乙個位置都可以乘2,3,5,找到比目...
面試題49 醜數
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。考察點 時間複雜度的理解 需求了解。思路 這道題最簡單的想法是寫乙個判斷是不是醜數的函式,然後從小到大以此遍歷,直到找到第...