Что не так в решении задачи?

330
16 января 2018, 13:17

Вот условие задачи:

Люба задумалась о поливке своего сада. Сад — это отрезок длины k. У Любы есть n вёдер, i-е ведро позволяет поливать за один час непрерывный отрезок сада длины ровно ai. Любе нельзя поливать уже политые части сада, также как и нельзя поливать части земли, находящиеся за пределами сада.

Люба хочет выбрать одно ведро так, чтобы как можно быстрее полить сад. Помогите ей узнать минимальное количество часов, за которое она сможет это сделать (как уже сказано, если она выберет ведро i, она каждый час будет поливать непрерывный отрезок длины ai). Гарантируется, что Люба всегда сможет полить весь сад.

Посмотрите в примеры для лучшего понимания. Входные данные

В первой строке задано два целых числа n и k (1 ≤ n, k ≤ 100) — количество вёдер и длина сада.

В следующей строке задано n целых чисел ai (1 ≤ ai ≤ 100) — длина отрезка, который за час можно полить i-м ведром.

Гарантируется, что найдётся хотя бы одно такое ведро, при помощи которого можно полить весь сад за целое число часов. Выходные данные

Выведите единственное число — минимальное количество часов, за которое Люба сможет полить весь сад. Примеры:

Входные данные

3 6 2 3 5

Выходные данные

2

Входные данные

6 7 1 2 3 4 5 6

Выходные данные

7

И вот мой код:

#include <iostream>
using namespace std;
int main()
{
    int n, k;
    cin >> n >> k;
    int arr [n];
    for (int i = 0; i < n - 1; i ++)
    {
        cin >> arr [i];
    }
    bool isthere = false;
    int min;
    for (int i = 0; i < n; i ++)
    {
        if (k % arr [i] == 0)
        {
            if (isthere == false)
            {
                min = k / arr [i];
                isthere = true;
            }
            else
            {
                if (k / arr [i] < min)
                {
                    min = k / arr [i];
                }
            }
        }
    }
    cout << min;
}

Однако результаты не совпадают. Что тут не так?

Answer 1

Ошибка в цикле: Вы уже правильно написали, что i = 0, но неправильно написали, что i < n - 1. Уберите - 1, и все!

В том месте, где происходит вход:

for (int i = 0; i < n; i ++)
READ ALSO
Использование &ldquo;new []&rdquo; вместо &ldquo;new&rdquo; в С++

Использование “new []” вместо “new” в С++

Можно ли использовать new [] вместо new? К примеру:

198
double to string

double to string

min достаточно маленькое - 222507e-308 (заметье, это не отрицательное число, а чучуть больше нуля)

247
минимальное значение double в string

минимальное значение double в string

как преобразовать минимальное значение double в формате fixed в string

212