В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
nast60
nast60
07.06.2021 17:42 •  Информатика

реализуйте алгоритм приближенного бинарного поиска.

входные данные
в первой строке входных данных содержатся числа n и k (0nk11). во второй строке n чисел первого массива, отсортированного по неубыванию, а в третьей строке – k чисел второго массива. каждое число в обоих массивах по модулю не превосходит 2109.

выходные данные
для каждого из k чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. если таких несколько, выведите меньшее из них.

примеры
входные данные
5 5
1 3 5 7 9
2 4 8 1 6
выходные данные
1
3
7
1
5

Показать ответ
Ответ:
polinka2002761
polinka2002761
05.03.2023 07:45
#include<iostream>
int main()
{
int nn,kk;
printf("Enter peoples and -kk: ");
scanf("%d%d",&nn,&kk);
int n[nn];
int k = kk;
int sum, p, l = 0, i = 0, q = 0;
for(int i = 0; i < nn; i++)
{
n[i] = 1;
printf("%d ",n[i]);
}
printf("\n");
do{
sum = 0;
p = l;
q = 0;
for(int i = 0; i < nn; i++)
{
if(n[i])
{
sum++;
}
}
for(;q!=kk;)
{
if(i==nn) i = 0;
if(n[i])
{
p++;
q++;
}
if(q==kk)
{
n[i] = 0;
l = i;
}
i++;
}
for(int i = 0; i < nn; i++)
{
printf("%d ",n[i]);
}
printf("\n");
}while(sum>2);
for(int i = 0; i < nn; i++)
{
if(n[i])
{
printf("Last: %d#",i+1);
}
}

return 0;
}
0,0(0 оценок)
Ответ:
евген1398
евген1398
23.02.2022 00:05
Как говорится, это вам не С++  - тут все очень быстро и коротко

// PascalABC.NET 3.3, сборка 1531 от 30.08.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var L:=new List<(string,real)>;
  // это не решение задачи, это ввод данных
  Writeln('Введите в каждой строке фамилию, пробел, время');
  var i:=1;
  repeat
    var s:=ReadlnString(i+': ');
    if s[1]='*' then break;
    var w:=s.ToWords;
    L.Add(Rec(w[0],real.Parse(w[1])));
    i+=1;
  until false;
  // а теперь само решение
  Writeln(L.MinBy(x->x[1]))
end.

Пример
Введите в каждой строке фамилию, пробел, время
1:  Иванов 10.3
2:  Петров 9.9
3:  Уточкин 10.1
4:  *
(Петров,9.9)
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота