醜數就是這個數的質因子只有2,3,5,7這四個,除此之外不再含有其它 別的質因子。 注意1也被認為是醜數.醜數的前20個為 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... ;
每行輸入乙個n,1 <= n <= 5842,n為0時輸入結束.
輸出相應的第n個醜數.
這道題是有簡單的做法
我們不妨直接乙個個的來確定答案,譬如說,ans[1] = 1這個是必要條件,就像數學歸納法中確定a(1)的做法是一樣的。
那麼,下一步一定是
以此類推,在**上是這樣寫到(因為我擔心我講不清楚):
inline void init()
}
好了,將答案預處理出來,剩下的就是o(1)的輸出了,如下:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define inf 0x3f3f3f3f
#define half (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define lson lsn, l, mid
#define rson rsn, mid+1, r
#define ql lson, ql, qr
#define qr rson, ql, qr
#define myself rt, l, r
#define min_4(a, b, c, d) min(min(a, b), min(c, d))
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxn = 5842;
ll ans[maxn + 1];
int p[4];
inline void init()
}int main()
return 0;
}
演算法題 醜數
2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第1500個醜數。所謂乙個數m是另乙個數n的因子,是指n能被m整除,也就是n m 0。根據醜數的定義,醜數只能被2 3和5整除。也就是說如果乙個數如果...
刷題 醜數提取及醜數判斷
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。根據醜數的定義,我們知道醜數一定是由2 3 5乘積得到,可表示成如下公式 我們預設1是第乙個醜數,初始醜數序列為1,從1開...
LeetCode刷題 醜數
編寫乙個程式判斷給定的數是否為醜數。醜數就是只包含質因數 2,3,5 的正整數。示例 1 輸入 6 輸出 true 解釋 6 2 3 示例 2 輸入 8 輸出 true 解釋 8 2 2 2 示例 3 輸入 14 輸出 false 解釋 14 不是醜數,因為它包含了另外乙個質因數 7。說明 1 是醜...