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

Коттеджный поселок
Новый коттеджный поселок "Высшепробинск" разделен на H*W квадратных участков.

По участкам вдоль границ поселка проложена дорога. На участках возле дороги можно построить коттедж, а на остальных участках будет разбит парк.

В Высшепробинске кроме дороги вдоль границ поселка планируется проложить авеню (дорогу с севера на юг), и стрит (дорогу с запада на восток). Каждая дорога будет шириной в один участок.

По известному количеству участков для строительства коттеджей и парков определите, где должна пройти авеню и стрит.

Формат входных данных
В первой строке вводятся числе H и W (3 ≤ H, W ≤ 109) - размеры Высшепробинска (количество строк и столбцов соответственно).

Во второй строке вводятся числа C и P (0 ≤ C, P ≤ 1018) - количество участков для коттеджей и парков соответственно.

Гарантируется, что данные корректны и ответ существует.

Формат результата
Выведите два числа: S (2 ≤ S ≤ H-1) - номер строки, в которой нужно построить стрит, и A (2 ≤ A ≤ W-1) - номер столбца, в котором нужно построить авеню.

Примеры
Входные данные
9 10
36 6
Результат работы
6 4

Показать ответ
Ответ:
petrius100p0bmz5
petrius100p0bmz5
14.11.2022 07:59

#include <iostream>

#include <vector>

#include <iterator>

#include <algorithm>

#include <cmath>


int main()

{

int

 sum(0), count(0),

 A, B;

std::cin >> A >> B;

std::vector<int> vec;

std::copy(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), std::back_inserter(vec));

 

for(auto it = vec.begin(); it != vec.end(); it++)

{

 if(A < *it && B > *it && (std::distance(vec.begin(), it) % 4) == 0)

  sum += pow(*it, 2);

}

std::cout << "Количество нулей: " << std::count(vec.begin(), vec.end(), 0) << std::endl;

std::cout << "Сумма квадратов чисел: " << sum << std::endl;

}


Найдите количество нулей во всем массиве и определите сумму квадратов чисел, принадлежащих промежутк
0,0(0 оценок)
Ответ:
CrazyBananaa
CrazyBananaa
13.01.2021 11:47

Сколько чисел можно записать с битов

Уже описано, как получать двоичный код любого десятичного числа, т.е. переводить его из десятичной системы в двоичную. Рассмотрим теперь обратное действие: перевод числа из двоичной системы счисления в десятичную.

Итак, требуется найти десятичное число по известному двоичному коду этого числа. Воспользуемся представлением вида (2). Коэффициенты аn, an-l ,···,a1, a0 известны. Значит, нужно вычислить значение выражения (2). Рассмотрим примеры. Пусть задан двоичный код 11012. Самый левый — старший бит — имеет номер 3. Следовательно, первое слагаемое равно 1·23. Следующий бит имеет

номер 2. Второе слагаемое равно 1·22. Третье слагаемое равно 0·21 четвертое слагаемое равно 1·20. Искомое число есть сумма четырех слагаемых: 1·23+1·22+0·21+1·20=8+4+1=13. Таким образом, 11012=13.

Пусть задан двоичный код 11010112. Число, имеющее такой двоичный код, равно сумме 1·26+1·25+0·24+1·23+0·22+1·21+1·20=64+32+8+2+1=107.

Следовательно, 11010112=107.

В десятичной системе следующее число получается из предыдущего путем прибавления единицы к количеству единиц предыдущего числа.

То же самое происходит при получении двоичного кода следующего числа из двоичного кода предыдущего: к младшему разряду двоичного кода предыдущего числа прибавляется единица.

Правило выполнения операции сложения одинаково для всех систем счисления: если сумма складываемых цифр больше или равна основанию системы счисления, происходит перенос единицы в следующий слева разряд. Таким образом, правила сложения в двоичной системе таковы:

12+02=12

02+12=12

12+12=102 (1+1=210=102)

Пользуясь этими правилами, получаем

+

112

12

1002=410

+

102

12

112=310

+

1002

12

1012=510

+

1012

12

1102=610

+

1102

12

1112=710

+

1112

12

10002=810

Возникает во какое наибольшее десятичное число можно записать в двоичном виде, используя для этой записи заданное число битов?

Наибольшее десятичное число, использующее для записи своего двоичного кода три бита, получается, когда значения всех трех битов равны единице:

1

1

1

=1·22+1·21+1·20=22+21+20=4+2+1=7.

(

8=

1

0

0

0

Точно так же, как в десятичной системе, наибольшее число, состоящее из трех цифр, — 999, получаем, когда каждая из цифр принимает свое максимальное значение, равное 9). Заметим, что 7=8-1=23-1. Чтобы представить следующее за 7 число 8 (=23), потребуется уже четыре бита: . Значит, используя три бита, можно записывать восемь десятичных чисел от 0 до 7.

А если для записи десятичного числа в двоичном виде используется четыре бита? Наибольшее число, двоичный код которого состоит из четырех битов, равно 15: в его двоичном коде все четыре бита, равны единице: 15 = 11112. Снова заметим, что 15=16-1=24-1; для записи следующего за 15 числа 16 нужно уже пять битов. Так что используя четыре бита, можно записывать числа от 0 до 15 (всего 16 = 24 чисел). Уже понятно, что наибольшее число, использующее для своей двоичной записи а битов, равно 2n -1. Следующее за ним число 2n требует для своей записи n+1 бит. Таким образом, используя п битов, можно записывать двоичные коды чисел от 0 до 2n -1, всего 2n чисел.

Объяснение:

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