引用知識:
編輯把只包含質因子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。第二行,...