Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет acmp.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
12.82 Mб
Скачать

Автобусы - 2

Для заезда в оздоровительный лагерь организаторы решили заказать автобусы. Известно, что в лагерь собираются поехать N детей и M взрослых. Каждый автобус вмещает K человек. В каждом автобусе, в котором поедут дети, должно быть не менее двух взрослых.

Определите, удастся ли отправить в лагерь всех детей и взрослых, и если да, то какое минимальное количество автобусов требуется для этого заказать.

Алгоритм решения:

Вводим кол-во детей, взрослых и вместительность автобусов. Находим целое число автобусов, которые нам нужны. Если число получается не целым, округляем в большую сторону. Если кол-во родителей в два раза больше, чем получившееся число автобусов, то выводим число автобусов, иначе выводим 0.

Детали

На клеточном поле N•M расположены две жёсткие детали. Деталь A накрывает в каждой строке несколько (не ноль) первых клеток, деталь B — несколько (не ноль) последних; каждая клетка либо полностью накрыта одной из деталей, либо нет.

Деталь B начинают двигать влево, не поворачивая, пока она не упрётся в A хотя бы одной клеткой. Определите, на сколько клеток будет сдвинута деталь B.

Алгоритм решения:

Вводим два числа - n,m. В цикле от 1 до n включительно вводим n строк длиной m. В каждой строчке считаем количесвто точек. Находим минимальное количество, записываем его в min, выводим min.

Золотой песок

Сотрудники завода по производству золотого песка из воздуха решили поправить свое финансовое положение. Они пробрались на склад завода, где хранился золотой песок трех видов. Один килограмм золотого песка первого вида они смогли бы продать за A1 рублей, второго вида – за A2 рублей, а третьего вида – за A3 рублей. Так получилось, что у сотрудников оказалось с собой только три емкости: первая была рассчитана на B1 килограмм груза, вторая на B2 килограмм, а третья на B3 килограмм. Им надо было заполнить полностью все емкости таким образом, чтобы получить как можно больше денег за весь песок. При заполнении емкостей нельзя смешивать песок разных видов, то есть, в одну емкость помещать более одного вида песка, и заполнять емкости песком так, чтобы один вид песка находился более чем в одной емкости.

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

Алгоритм решения:

В цикле от 1 до n включительно заполняем массив и находим сумму его элементов и максимальный элемент max. В таком же цикле заполняем второй массив и находим сумму его элементов и находим максимальный элемент max1. Также для этих массивов соответственно находим минимальные элементы min и min1. Из суммы элементов каждого массива вычитаем его min(min1) и max(max1), в зависимости от массива. И дальше перемножаем соответственные элементы массивов, max*max1 , min*min1, и средние элементы, и выводим сумму этих произведений.

Бинарные числа

Говорят, что плохой программист – это тот, кто считает, что в одном килобайте 1000 байт, а хороший программист – это тот, кто полагает, что в одном километре 1024 метра.

Многим эта шутка понятна, так как все знают, что в процессах, связанных с информатикой и компьютерной техникой, фигурирует множество значений, выражаемых степенью двойки, то есть чисел вида 2K, где K – некоторое неотрицательное целое число. Назовем такие числа бинарными. Это такие числа как 2, 4, 8, 16, 32 и т.д. Действительно, когда речь идет о размере памяти или о разрешении экрана монитора, то мы часто наталкиваемся на бинарные числа. Все это связано с принципом хранения информации в памяти ЭВМ.

Задано целое число N. Требуется определить, является ли оно бинарным.

#include <iostream>

using namespace std;

int main () {

int x = 1, n;

cin>> n;

while(n > x){

x*=2;

}

if(n == x){

cout<< "YES";

}else

cout<< "NO";

return 0;

}

Алгоритм решения:

Вводится число - n. В цикле while пока n>x , мы x умножаем на 2. Если после завершения работы цикла n=x, выводим YES, иначе NO.

Лентяй

Студент Валера являет собой классический пример лентяя. На занятия он практически не ходит, и только в конце семестра появляется в университете и сдает ”хвосты”. Его заветная мечта: найти такой день, когда можно будет сдать сразу все долги. У него есть расписание работы преподавателей, из которого точно известно, с какого и по какой день месяца каждый преподаватель ежедневно будет доступен.

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

Алгоритм решения:

Изначально массив равен нулю. В первом цикле вводятся a и b – с какого дня по какой работает i-тый учитель. С a-того по b-тый элемент увеличиваем, делаем ненулевым. В следующем цикле мы проверяем каждый столбец на кол-во ненулевых элементов. Если оно совпадает с кол-вом учителей, значит e=1, все учителя принимают, мы выводим YES. Иначе выводим NO.

Ремонт

Ваш любимый дядя – директор фирмы, которая делает евроремонты в офисах. В связи с финансово-экономическим кризисом, дядюшка решил оптимизировать свое предприятие.

Давно ходят слухи, что бригадир в дядюшкиной фирме покупает лишнее количество стройматериалов, а остатки использует для отделки своей новой дачи. Ваш дядя заинтересовался, сколько в действительности банок краски необходимо для покраски стены в офисе длиной L метров, шириной – W и высотой – H, если одной банки хватает на 16м2, а размерами дверей и окон можно пренебречь? Заказов много, поэтому дядя попросил написать программу, которая будет все это считать.

#include <iostream>

using namespace std;

main()

{

int l,w,h;

cin>>l>>w>>h;

if((l*h*2+h*w*2)%16==0) cout<<((l*h*2+h*w*2)/16);

else cout<<((l*h*2+h*w*2)/16+1);

}

Алгоритм решения:

Вводится три числа длина, ширина и высота - l,w,h. Если суммарная площадь стен без остатка делится на 16, то количество банок краски = l*h*2+h*w*2)/16, иначе мы прибавляем еще одну банку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]