oaoaoaoaoa
12.06.2020 02:23

Башня Петя в очередной раз купил себе набор из кубиков. На этот раз он выстроил из них настоящую крепость — последовательность из N столбиков, высота каждого столбика составляет Ai кубиков. Вскоре ему стало интересно, насколько его крепость защищена от жуликов и воров. Для этого он ввел понятие башни. Башней называется любая последовательность из K столбиков подряд (где K — любимое число Пети). Защищенность башни определяется как суммарная высота всех столбиков этой башни (чем она больше, тем громаднее и ужаснее она кажется), умноженная на минимум высоты столбиков башни (т.к. враги, очевидно, будут пытаться проникнуть через самое слабое место башни). Неприступность крепости определяется как сумма защищенностей каждой из башен. Петя решил как можно скорее посчитать, какова же неприступность его крепости. Однако вскоре он понял, что недостаточно знать высоту каждого из столбиков. В зависимости от того, как сгруппировать столбики в башни, получится разный результат. В различных вариантах группировки часть столбиков могут не принадлежать ни одной из башен. Разумеется, Петя выберет то разбиение на башни, при котором неприступность будет максимальна. Петя успешно справился со своей задачей, но теперь Правительство Флатландии решило защитить свой горный курорт. Правительство уже построило крепость из кубиков (просто кубики были побольше). Теперь вы должны Правительству посчитать неприступность этой крепости. Единственная трудность состоит в том, что у Правительства было очень много денег, и поэтому крепость была построена очень длинная. Входные данные В первой строке содержатся число N — количество столбиков в крепости и число K — любимое число Пети (1 ≤ K ≤ N ≤ 100 000). Далее в следующей строке содержатся N целых чисел, обозначающих Ai (1 ≤ Ai ≤ 106). Выходные данные В первой строке выведите число Q — количество башен в оптимальном разбиении. Далее выведите Q чисел — номера первых столбиков каждой башни. Примеры Ввод Вывод 8 3 1 2 3 4 1 6 7 8 2 2 6 1 1 1 1 1 2 1 1 1000000 2 1 2 Решите на с++ или Python

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
MrVyacheslav228
01.05.2020 14:05
Хорошо, давайте рассмотрим каждую пару адреса в отдельности.

1. Для адреса 192.168.104.109 с маской 255.255.255.252:
- Для начала, давайте преобразуем маску в двоичную форму:
255.255.255.252 = 11111111.11111111.11111111.11111100
- Теперь представим IP-адрес также в двоичной форме:
192.168.104.109 = 11000000.10101000.01101000.01101101
- Чтобы определить адрес сети, применим поразрядную операцию "И" (AND) к IP-адресу и маске:
11000000.10101000.01101000.01101101 & 11111111.11111111.11111111.11111100 = 11000000.10101000.01101000.01101100
- Переведем полученный адрес сети обратно в десятичную форму:
11000000.10101000.01101000.01101100 = 192.168.104.108
- Разберемся с номером компьютера:
IP-адрес - Адрес сети = Номер компьютера
192.168.104.109 - 192.168.104.108 = 1

Таким образом, адрес сети: 192.168.104.108 и номер компьютера: 1.

2. Для адреса 172.16.12.12 с маской 255.255.255.248:
- Преобразуем маску в двоичную форму:
255.255.255.248 = 11111111.11111111.11111111.11111000
- Представим IP-адрес также в двоичной форме:
172.16.12.12 = 10101100.00010000.00001100.00001100
- Применим поразрядную операцию "И" (AND) к IP-адресу и маске:
10101100.00010000.00001100.00001100 & 11111111.11111111.11111111.11111000 = 10101100.00010000.00001100.00001000
- Переведем полученный адрес сети обратно в десятичную форму:
10101100.00010000.00001100.00001000 = 172.16.12.8
- Разберемся с номером компьютера:
IP-адрес - Адрес сети = Номер компьютера
172.16.12.12 - 172.16.12.8 = 4

Таким образом, адрес сети: 172.16.12.8 и номер компьютера: 4.

3. Для адреса 10.10.40.15 с маской 255.255.255.224:
- Преобразуем маску в двоичную форму:
255.255.255.224 = 11111111.11111111.11111111.11100000
- Представим IP-адрес также в двоичной форме:
10.10.40.15 = 00001010.00001010.00101000.00001111
- Применим поразрядную операцию "И" (AND) к IP-адресу и маске:
00001010.00001010.00101000.00001111 & 11111111.11111111.11111111.11100000 = 00001010.00001010.00101000.00000000
- Переведем полученный адрес сети обратно в десятичную форму:
00001010.00001010.00101000.00000000 = 10.10.40.0
- Разберемся с номером компьютера:
IP-адрес - Адрес сети = Номер компьютера
10.10.40.15 - 10.10.40.0 = 15

Таким образом, адрес сети: 10.10.40.0 и номер компьютера: 15.

Вот, я дал максимально подробное описание с обоснованием и пошаговым решением. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!
0,0(0 оценок)
Ответ:
Хорошо, вот программа на языке Python, которая решает данную задачу:

```python
# Вводим целое число с клавиатуры
number = int(input("Введите целое число: "))

# Проверяем, является ли число отрицательным
if number < 0:
# Если число отрицательное, то прибавляем 50
number = number + 50
else:
# Если число положительное или равно нулю, то умножаем его на 10
number = number * 10

# Выводим полученное число
print("Результат:", number)
```

Теперь пошагово разберем каждый шаг программы:

1. Мы начинаем программу с ввода целого числа с клавиатуры. Пользователь должен ввести число и нажать Enter.

```python
number = int(input("Введите целое число: "))
```

2. Далее мы используем условный оператор `if` для проверки, является ли число отрицательным. Выражение `number < 0` сравнивает значение переменной `number` с числом 0.

```python
if number < 0:
```

3. Если значение переменной `number` меньше 0 (т.е. число отрицательное), то мы выполняем блок кода, который находится после двоеточия.

```python
number = number + 50
```

4. Внутри этого блока мы прибавляем к значению переменной `number` число 50 с помощью оператора `+`. Это означает, что если число отрицательное, мы увеличиваем его на 50.

5. Если число положительное или равно нулю (т.е. условие `number < 0` не выполнено), то мы выполняем другой блок кода с помощью оператора `else`.

```python
else:
```

6. Внутри этого блока мы умножаем значение переменной `number` на 10 с помощью оператора `*`. Это означает, что если число неотрицательное, мы умножаем его на 10.

```python
number = number * 10
```

7. После выполнения одного из блоков кода, мы переходим к следующей строке программы.

8. В конце программы мы выводим полученное число на экран с помощью функции `print`.

```python
print("Результат:", number)
```

Таким образом, эта программа позволяет решить задачу, описанную в вопросе, и выводит на экран результат ее выполнения.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота