1010 只包含因子2 3 5的數 預處理 二分

2021-08-07 22:39:33 字數 1140 閱讀 9517

1010 只包含因子2 3 5的數

基準時間限制:1 秒 空間限制:131072 kb 分值: 10 

難度:2級演算法題

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。

input

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

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

output

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

518

1335

77

output示例

2815

3680

李陶冶(題目提供者)

題解: 將1e18+999範圍內所有符合題意的數提前處理出來,這裡要超過1e18的,因為題中說了n會等於1e18的。好像大概1萬個吧,然後排序一下,對於給定的乙個數,就是二分找符合條件的最小值問題了,經典二分。

蠢了,竟然不會預處理了(其實主要是一直以為打表會打不下。。)

**:

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn = 1e6+5;

const int mod = 1e9+7;

const int hash = 10000;

const int inf = 1<<30;

const ll llinf = 1e18+999;

ll n;

ll ans[maxn];

int cnt;

//預處理

void init( )

int main( )

cout<}}

1010 只包含因子2 3 5的數

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。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t ...

只包含因子2 3 5的數

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。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t ...

51Nod 1010 只包含因子2 3 5的數

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。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t ...