random_device rd;
mt19937 eng(rd());
uniform_int_distribution<int> dist(1, 10);
int n;
int x;
cin >> n >> x;
vector<int> a(n);
for (auto& i : a)
i = dist(eng);
copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));
cout << '\n';
sort(a.begin(), a.end());
copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));
cout << '\n';
if (binary_search(a.cbegin(), a.cend(), x)) {
cout << x << " found";
} else {
set<int> temp(a.cbegin(), a.cend());
if (x < *temp.cbegin()) {
cout << *temp.cbegin();
} else if (x > *prev(temp.cend())) {
cout << *prev(temp.cend());
} else {
auto f = lower_bound(a.cbegin(), a.cend(), x);
auto s = upper_bound(a.cbegin(), a.cend(), x);
if (f != a.cend() && s != a.cend()) {
if (abs(*f - x) < abs(*s - x)) {
cout << *f;
} else {
cout << *s;
}
} else if (f == a.cend() && s != a.cend()) {
cout << *s;
} else if (f != a.cend() && s == a.cend()) {
cout << *f;
}
}
}
Поделитесь своими знаниями, ответьте на вопрос:
Пользователь вводит два числа если большее кратно меньшему то найдите их сумму в противном случае найдите их частное
var
a, b: integer;
begin
write('a = '); readln(a);
write('b = '); readln(b);
if a < b then
begin
a : = a + b;
b : = a - b;
a : = a - b;
end;
if a mod b = 0 then
writeln('a + b = ', a + b)
else
writeln('a / b = ', a / b);
end.