cho dãy số un=n²+1 và giá trị x.hãy tìm phần tử của dãy số nhỏ nhất thỏa mãn lớn hơn hoặc bằng x.
in ra t dòng, dòng thứ i ghi số kết quả tương ứng là phần tử nhỏ nhất của dãy số lớn hơn hoặc bằng x tương ứng
sample input
10
5
1
5
10
20
50
sample output
2
5
10
26
50
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <iostream>
#include <vector>
#include <math.h>
#define ll long long
using namespace std;
void xuly(vector<ll> &a){
for (ll i = 1; i <= a.size(); i++){
a[i-1] = (i*i)+1;
}
}
ll bs(ll x, vector <ll> &a){
ll l = 0, r = a.size()-1, k = LLONG_MAX, m = 0;
while (l <= r){
m = l + (r-l)/2;
if (a[m] == x){
return a[m];
}
if (a[m] > x){
r = m-1;
k = min(k, a[m]);
}else{
l = m+1;
}
}
return k;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll n,t; cin >> n >> t;
vector <ll> a(n);
xuly(a);
while (t--){
ll x; cin >> x;
cout << bs(x,a) << endl;
}
return 0;
}
// tao mang xong dung tim kiem nhi phan de tim phan tu be nhat lon hon hoac bang x th
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin