醜數 打表 二分查詢

2021-09-16 14:02:21 字數 1249 閱讀 1983

引用知識:

編輯把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但7、14不是,因為它們包含質因子7。 習慣上我們把1當做是第乙個醜數。

前20個醜數為:1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36。

編輯首先除2,直到不能整除為止,然後除5到不能整除為止,然後除3直到不能整除為止。最終判斷剩餘的數字是否為1,如果是1則為醜數,否則不是醜數。

k的因子中只包含2 3 5。滿足條件的前10個數是:2,3,4,5,6,8,9,10,12,15。

所有這樣的k組成了乙個序列s,現在給出乙個數n,求s中 >= 給定數的最小的數。

例如:n = 13,s中 >= 13的最小的數是15,所以輸出15。

第1行:乙個數t,表示後面用作輸入測試的數的數量。(1 <= t <= 10000)

第2 - t + 1行:每行1個數n(1 <= n <= 10^18)

共t行,每行1個數,輸出》= n的最小的只包含因子2 3 5的數。
518

1335

77

2815

3680

解題思路:醜數打表+二分查詢。如果去列舉的話,抱歉time limittted!!!

下面是我的**

#include "bits/stdc++.h"

using namespace std;

#define ll long long

ll a[100000];

ll ugly(ll n)

while(n>=5&&n%5==0)

while(n>=3&&n%3==0)

if(n==1) return 1;

else return 0;

}ll min1(ll a,ll b,ll c)

int bsearch(ll a, int n,ll key) else

}return low <= n ? low : -1;

}int main(int argc, char const *ar**)

// cout<>n2;

// cout

else

} return 0;

}

二分查詢數

二分搜尋,也稱折半搜尋 二分查詢,是用來在乙個有序陣列中查詢某一元素的演算法。以在乙個公升序陣列中查詢乙個數為例。它每次考察陣列當前部分的中間元素,如果中間元素剛好是要找的,就結束搜尋過程 如果中間元素小於所查詢的值,那麼左側的只會更小,不會有所查詢的元素,只需要到右側去找就好了 如果中間元素大於所...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

二分查詢與二分答案 A B 數對

出題是一件痛苦的事情!相同的題目看多了也會有審美疲勞,於是我捨棄了大家所熟悉的 a b problem,改用 a b 了哈哈!好吧,題目是這樣的 給出一串數以及乙個數字 c,要求計算出所有 a b c 的數對的個數 不同位置的數字一樣的數對算不同的數對 輸入共兩行。第一行,兩個整數 n,c。第二行,...