(Бинарный поиск) Количество итераций, необходимых для нахождения целого числа между интервалами - PullRequest
0 голосов
/ 07 февраля 2020

Описание: Меня попросили определить количество шагов, необходимых для поиска 'k' в [a, b], с помощью бинарного поиска. Выходными данными должно быть количество итераций, необходимое для нахождения 'k', представленного 'count'. Меня просят сделать это без встроенной функции.

Проблема: Кажется, что есть ошибка logi c, так как при вводе кода для проверки на Codeforces она отклоняется. Отказ происходит из-за неизвестного мне образца ввода, я не могу понять проблему. Вот код:

    #include <iostream>
    using namespace std;

    int main(){
      /*a: interval start, b: interval end, k: number being searched for*/
      int a, b, k, count = 0;
      cin >> a >> b >> k;

      //Binary search variables
      int start = a, end = b, mid = -1;

    //Binary Search implementation
    while (start <= end) {
    count++;
    mid = (start + end) / 2;
    if (mid == k) {
        cout << count;
        break;
    }
    else if (mid < k) {
        start = mid + 1;
    }
    else {
        end = mid - 1;          
       }
   }

    return 0;
   } 
...