Наименьшая система счисления
Известно, что основанием позиционной системы счисления называют количество различных символов, используемых для записи чисел в данной системе счисления. Также известно, что любое число x в b-ичной системе счисления имеет вид x=a0∙b0+a1∙b1+…+an∙bn, где b ≥ 2 и 0 ≤ ai < b.
Для записи чисел в b-ичной системе счисления, где b ≤ 36, могут быть использованы первые b символов из следующего списка 0,1,…, 9, A, B, …, Z. Например, для записи чисел в троичной системы используются символы 0, 1, 2, а в двенадцатеричной - 0,1,…, 9, A, B.
Требуется написать программу, которая по входной строке S определит, является ли данная строка записью числа в системе счисления, с основанием не большим 36, и, если является, определит минимальное основание этой системы счисления.
Алгоритм решения:
Вводим строку s. Если она не является записью числа в некоторой системе счисления, выводим -1. Если строка содержит в себе все нули , выводим -2, так как минимальная система счисления двоичная. Иначе находим в цикле от 0 до конца строки наибольший код элемента по таблице ASCII, выводим код+1.
Четырехзначный палиндром
Требуется написать программу, определяющую, является ли четырехзначное натуральное число N палиндромом, т.е. числом, которое одинаково читается слева направо и справа налево.
#include <iostream>
using namespace std;
main()
{
int i,n,k;
n=4;
cin>>k;
int a[n];
if((k>=1000) && (k<=9999)) {
for(i=1;i<=4;i=i+1)
{
a[i]=k%10;
k= k/10.0;
}
if ((a[1]==a[4]) && (a[2]==a[3])) cout<<"YES";
else cout<<"NO";}
}
Алгоритм решения:
Вводим число k. В цикле от 1 до 4 включительно заполняем массив, цифрами из числа. Если первая и последняя , вторая и третья цифры равны, выводим Yes, иначе No.
Время прибытия
Задано время отправления поезда и время в пути до конечной станции. Требуется написать программу, которая найдет время прибытия этого поезда (возможно, в другие сутки).
#include <iostream>
using namespace std;
main()
{
int a,b,m,n;
char c[5];
cin>>c;
cin>>m>>n;
a=(int(c[0])-int('0'))*10+(int(c[1])-int('0'));
b=(int(c[3])-int('0'))*10+(int(c[4])-int('0'));
b+=n;
a=(a+m+b/60)%24;
b%=60;
if(a>=10) cout<<a; else cout<<"0"<<a;
cout<<":";
if(b>=10) cout<<b; else cout<<"0"<<b;
}
Алгоритм решения:
В символьный массив записываем время отправки поезда. В переменные m и n вводим время поезда в пути. Переменную а переводим в тип int часы, а b в тип int минуты. Потом к b прибавляем минуты в пути, а к a часы в пути и часы от минут.
Остатком от деления на 24 проверяем подходит ли запись времени по формату, аналогично с минутами. Выводим время прибытия в нужном формате.
Лифт
В доме Вилли установили скоростной лифт новой экспериментальной модели. В этом лифте кнопки с номерами этажей заменены двумя другими кнопками. При нажатии на первую кнопку лифт поднимается на один этаж вверх, а при нажатии на вторую – опускается на один этаж вниз.
Младшему брату Вилли Дилли очень нравится кататься на новом лифте. Он катается на нём до тех пор, пока не побывает на каждом из этажей хотя бы по одному разу. После этого Дилли довольный возвращается домой.
Зная порядок, в котором Дилли нажимал на кнопки лифта, попробуйте определить общее количество этажей в доме Вилли и Дилли.
Алгоритм решения:
Вводим строку – последовательность нажатий на кнопки лифта. Поскольку мы не знаем, на каком этаже находимся, мы берем максимальное кол-во этажей 202 (101 вверх и 101 вниз) и предполагаем, что находимся на 101-ом, откуда начинаем отсчет, при этом присваиваем a[101] (a[h]) значение 1 (отмечаемся, что мы находимся на этом этаже). Затем в цикле от 0 до конца строки смотрим, чему равен текущий элемент, т.е. куда двигается лифт. Если лифт едет вверх, то отмечаемся на следующем этаже (h++; a[h]=1). Если лифт едет вниз, то отмечаемся на нижнем этаже (h--; a[h]=1). Получается, что на тех этажах, на которых мы были, стоят единички. Затем в цикле от 0 до 202 считаем кол-во единиц. Это и есть искомое число этажей.
Левая рекурсия
В теории формальных грамматик и автоматов (ТФГиА) важную роль играют так называемые контекстно-свободные грамматики (КС-грамматики). КС-грамматикой будем называть четверку, состоящую из множества N нетерминальных символов, множества T терминальных символов, множества P правил (продукций) и начального символа S, принадлежащего множеству N.
Каждая продукция p из P имеет форму A –> a, где A нетерминальный символ (A из N), а a – строка, состоящая из терминальных и нетерминальных символов. Процесс вывода слова начинается со строки, содержащей только начальный символ S. После этого на каждом шаге один из нетерминальных символов, входящих в текущую строку, заменяется на правую часть одной из продукций, в которой он является левой частью. Если после такой операции получается строка, содержащая только терминальные символы, то процесс вывода заканчивается.
Во многих теоретических задачах удобно рассматривать так называемые нормальные формы грамматик. Процесс приведения грамматики к нормальной форме часто начинается с устранения левой рекурсии. В этой задаче мы будем рассматривать только ее частный случай, называемый непосредственной левой рекурсией. Говорят, что правило вывода A –> R содержит непосредственную левую рекурсию, если первым символом строки R является A.
Задана КС-грамматика. Требуется найти количество правил, содержащих непосредственную левую рекурсию.
Алгоритм решения:
Вводим количество строк, в цикле от 1 до n включительно вводим n строк. Дальше считаем количество строк в которых нулевой элемент совпадает с третим.
Железная дорога
При строительстве новой железной дороги возникли проблемы. Дорога пролегает по холмистой местности, однако сами пути должны идти строго горизонтально. Поэтому руководство строительной компании приняло решение выровнять поверхность земли на этом участке. Главная проблема состоит в том, что привозить или вывозить землю на стройку стоит 10000$ за кубический метр. Поскольку бюджет железной дороги невелик, этого нельзя себе позволить.
Поэтому главный инженер принял решение выровнять поверхность, используя только землю, из которой состоят холмы. Теперь самая сложная задача состоит в том, чтобы выяснить высоту над уровнем моря, на которой будет пролегать дорога. Это ответственное задание было поручено Вам.
Через каждый метр от начала участка была измерена высота над уровнем моря. Напишите программу, которая по данным измерений рассчитывает искомую высоту.
#include <iostream>
#include <iomanip>
using namespace std;
main()
{
int n,i;
double sum=0,a[30000];
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=1;i<n;i++)
{
sum+=(a[i-1]+a[i])/2;
}
cout<<fixed<<setprecision(10)<<sum/(n-1);
return 0;
}
Алгоритм решения:
Вводим n – кол-во точек. Каждый участок между двумя точками – это трапеция, площадь которой находится как полусумма оснований, умноженная на высоту. Основания – высоты двух соседних точек. А высоты всех трапеций равны единице, т.е. расстоянию между точками. Мы складываем площади всех трапеций и делим на их кол-во. Выводим полученное число.
Шахматный конь
Вася решил научиться играть в шахматы. Он нашел книгу с записями партий и внимательно их изучает. Может быть, когда-нибудь Вася станет великим шахматистом, но пока он еще учится в начальной школе, и ему нелегко дается шахматная нотация. Больше всего трудностей у Васи вызывают ходы шахматного коня. Он попросил вас написать программу, которая сможет сообщить Васе, на какие клетки можно пойти конем с заданной клетки.
Вы, наверное, тоже знаете, что конь в шахматах всегда перемещается либо на две клетки по горизонтали и на одну по вертикали, либо на одну по горизонтали и на две по вертикали. Вертикали обозначаются маленькими латинскими буквами от a до h, а горизонтали - цифрами от 1 до 8. Любая клетка на шахматной доске обозначается буквой соответствующей вертикали и цифрой соответствующей горизонтали, например, c6 или e2.
Алгоритм решения: Вводим координаты клетки. В k и j записываем номера клетки. Так как мы знаем, что конь ходит на две клетки вперед и на одну в сторону, по координате клетки можем узнать , куда конь сможет пойти.
Сбор черники
В фермерском хозяйстве в Карелии выращивают чернику. Она растет на круглой грядке, причем кусты высажены только по окружности. Таким образом, у каждого куста есть ровно два соседних. Всего на грядке растет N кустов.
Эти кусты обладают разной урожайностью, поэтому ко времени сбора на них выросло различное число ягод – на i-ом кусте выросло ai ягод.
В этом фермерском хозяйстве внедрена система автоматического сбора черники. Эта система состоит из управляющего модуля и нескольких собирающих модулей. Собирающий модуль за один заход, находясь непосредственно перед некоторым кустом, собирает ягоды с этого куста и с двух соседних с ним.
Напишите программу для нахождения максимального числа ягод, которое может собрать за один заход собирающий модуль, находясь перед некоторым кустом заданной во входном файле грядки.
#include <iostream>
using namespace std;
int main()
{
int max,i,k=0,n;
unsigned int a[1001];
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
a[n+1]=a[1];
a[n+2]=a[2];
max=a[1]+a[2]+a[3];
for(i=2;i<n+2;i++)
{k=a[i-1]+a[i]+a[i+1];
if((k)>max) max=k;
}
cout<<max;
}
Алгоритм решения:
Вводим количество кустов. В цикле от 1 до n включительно, заполняем массив, чтобы закруглить цикл a[n+1]= a[1]; a[n+2]=a[2];. За max возымеем сумму ягод на первых трех кустах. В цикле от 2 до n+2 ищем максимальную сумму из трех рядом стоящих кустов, записываем ее в max. Выводим max.
Турист
Гена собирается на туристический слет учеников своей школы. В своем классе он был назначен ответственным за палатки. У себя дома он нашел 3 палатки: первая из них весит a1 килограмм и вмещает b1 человек, вторая весит a2 килограмм и вмещает b2 человек, третья весит a3 килограмм и вмещает b3 человек.
В классе Гены K человек. Выясните, может ли он выбрать палатки так, чтобы в них все могли поместиться. При этом учитывайте, что выбранные палатки должны суммарно весить не более W килограмм.
Алгоритм решения:
Вводим необходимые данные: максимальное кол-во человек и палаток, а так же вместительность и вес каждой палатки. Затем проверяем каждый набор палаток проверяем по условиям, подходит ли он нам по максимальному кол-ву человек и предельному весу. Если да, выводим YES, иначе выводим NO.
Цветочки
В рождественский вечер на окошке стояло три цветочка, слева на право: герань, крокус и фиалка. Каждое утро Маша вытирала окошко и меняла местами стоящий справа цветок с центральным цветком. А Таня каждый вечер поливала цветочки и меняла местами левый и центральный цветок. Требуется определить порядок цветов ночью по прошествии K дней.
#include<iostream>
using namespace std;
int main()
{
int k;
char x,y,z;
x='G';
y='C';
z='V';
cin>>k;
for(int i=0; i<k; i++)
{
swap(z,y);
swap(x,y);
}
cout<<x<<y<<z;
}
Алгоритм решения:
Вводится число дней - k. Каждый день цветы меняются по закону swap(z,y);
swap(x,y);. В цикле от 0 до k используем этот закон , чтобы узнать конечное расположение цветков. Выводим переменные x,y,z.
Очередь
Студент Василий живет в общежитии. Отделение банка, в котором он производит оплату за проживание, имеет всего две кассы, поэтому почти всегда длинная очередь к ним. Первая касса открывается в 8.00, вторая – в 8.05. Последний клиент будет принят в 20.00. Очередь единая, и очередной клиент обслуживается, как только освобождается одна из касс. На обслуживание одного клиента уходит ровно 10 минут. Василий приходит ровно в 8.00 и видит, сколько человек стоит перед ним. Требуется определить, сколько времени ему придется простоять в очереди, и вообще обслужат ли его сегодня.
#include <iostream>
using namespace std;
main()
{ int k;
cin>>k;
k=k*5-5;
if (k>720) cout<<"NO";
else cout<<k/60<<' '<<k%60;
}
Алгоритм решения:
Вводим номер Василия в очереди - k. Смотрим какое время Василий еще проведет в очереди, если k>720 выводим No, в ином случае выводим через пробел часы и минуты.
Клавиатура - 2
Всем известно, что со временем клавиатура изнашивается, и клавиши на ней начинают залипать. Конечно, некоторое время такую клавиатуру еще можно использовать, но для нажатий клавиш приходиться использовать большую силу.
При изготовлении клавиатуры изначально для каждой клавиши задается количество нажатий, которое она должна выдерживать. Если знать эти величины для используемой клавиатуры, то для определенной последовательности нажатых клавиш можно определить, какие клавиши в процессе их использования сломаются, а какие – нет.
Требуется написать программу, определяющую, какие клавиши сломаются в процессе заданного варианта эксплуатации клавиатуры.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n,i,k,j;
cin>>n;
int a[n+1];
for(i=1;i<=n;i++)
cin>>a[i];
cin>>k;
int b[k];
for(i=1;i<=k;i++)
cin>>b[i];
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
if(i==b[j]) a[i]--;
for(i=1;i<=n;i++)
if(a[i]>=0) cout<<"no"<<endl;
else cout<<"yes"<<endl;
}
Алгоритм решения:
Вводим количество клавиш на клавиатуре - n. В цикле от 1 до n включительно заполняем массив. Потом вводим общее число нажатий клавиш - k. В цикле от 1 до k заполняем массив нажатий. Для i-ой клавиши определяем количество нажатий, если a[i]>=0 то кла виша не сломается, в ином случае сломается.
Торт
На свой день рождения Петя купил красивый и вкусный торт, который имел идеально круглую форму. Петя не знал, сколько гостей придет на его день рождения, поэтому вынужден был разработать алгоритм, согласно которому он сможет быстро разрезать торт на N равных частей. Следует учесть, что разрезы торта можно производить как по радиусу, так и по диаметру.
Помогите Пете решить эту задачу, определив наименьшее число разрезов торта по заданному числу гостей.
#include <iostream>
using namespace std;
main()
{
int n;
cin>>n;
if(n<=1000) if (n==1) cout<<"0";
if( ( n<=1000)&&(n>1)) { if (n%2==0){
n=n/2;
cout<<n;
}
else cout<<n;}
}
Алгоритм решения:
Вводим число гостей - n. Если гость один, то число разрезов 0. Если число гостей четное, то разрезов можно сделать в два раза меньше, иначе столько сколько гостей.
День программиста
День программиста отмечается в 255-й день года (при этом 1 января считается нулевым днем). Требуется написать программу, которая определит дату (месяц и число григорианского календаря), на которую приходится День программиста в заданном году.
В григорианском календаре високосным является:
год, номер которого делится нацело на 400
год, номер которого делится на 4, но не делится на 100
Алгоритм решения:
Вводим year – номер года нашей эры. Проверяем, високосный ли этот год (год является високосным, если номер года нацело делится на 400, либо делится на 4, но не делится на 100). Если год високосный, день программиста будет приходиться на 12.09, если не високосный – на 13.09. Нули до номера года мы выводим в зависимости от кол-ва разрядов в исходном числе.
Модуль суммы
Дана последовательность целых чисел. Требуется найти подпоследовательность заданной последовательности с максимальным модулем суммы входящих в нее чисел. Напомним, что модуль целого числа x равняется x, если x ≥ 0 и -x, если x < 0.
Алгоритм решения:
Вводим длину последовательности - n. В цикле от 0 до n заполняем массив. В цикле от 0 до n находим сумму положительных числе и отрицательных чисел.
Сравниваем модуль сумм, выводим количество членов, а во вторую строку выписываем номера членов последовательностей.
Внеземные гости
Недавно на поле фермера Джона были обнаружены следы приземления летающих тарелок. Об этом даже писала газета Mew Yorc Courier.
Поле фермера Джона имеет форму круга радиусом r1. По сообщениям журналистов были обнаружены два следа от летающих тарелок, имевшие форму кругов. Один из них имел радиус r2, второй - радиус r3. Также сообщается, что они находились внутри поля фермера Джона и не пересекались (при этом, они, возможно, касались друг друга и/или границы поля).
Поскольку журналисты часто склонны преувеличивать масштабы событий, необходимо написать программу, которая будет проверять, могли ли иметь место события, описанные в газете.
#include <iostream>
using namespace std;
main()
{
int r1,r2,r3;
cin>>r1>>r2>>r3;
if (r1>=(r2+r3)) cout<<"YES";else cout<<"NO";
}
Алгоритм решения:
Вводим три числа – радиусы. Если сумма второго и третьего радиуса меньше или равна первому радиусу, то выводим YES, т.к. это возможно. Иначе выводим NO.
Треугольник - 3
Даны длины трех отрезков. Требуется проверить: могут ли они являться сторонами треугольника.
#include <iostream>
using namespace std;
int main() {
int x, y, z;
cin >> x >> y >> z;
if (x + y > z && x + z > y && z + y > x) cout << "YES";
else cout << "NO";
}
Алгоритм решения:
Вводим три числа – длины отрезков. Три отрезка могут быть сторонами треугольника, если каждый из них меньше суммарной длины двух остальных. Это условие мы проверяем для каждого из отрезков. Если все три условия соблюдаются, выводим YES. Иначе выводим NO.
ACM World Finals
Некоторые из вас, наверно, знают, что ежегодно проводится чемпионат мира по программированию среди студентов (http://acm.baylor.edu). В финал этого соревнования проходят около 80 команд со всего мира.
Каждая команда состоит из трех человек и имеет название. Напишите программу, которая по краткому названию команды и фамилиям ее участников, строит полное название команды.
Полное название команды состоит из краткого названия команды и списка фамилий ее участников. Фамилии участников в списке должны быть упорядочены по алфавиту и отделены друг от друга запятыми. Название команды от фамилий участников должно быть отделено двоеточием. После каждого знака препинания должен стоять ровно один пробел.
Алгоритм решения:
Вводим четыре строки. Сортируем их, и выводим в необходимом порядке.
NEERC
В полуфинале студенческого чемпионата мира по программированию NEERC (http://neerc.ifmo.ru) участвуют команды из n институтов. Участники для проведения соревнований распределяются по k залам, каждый из которых имеет размеры, достачные для размещения всех команд от всех институтов. При этом по правилам соревнований в одном зале может находиться не более одной команды от института.
Многие институты уже подали заявки на участие в полуфинале. Оргкомитет полуфинала хочет допустить до участия максимально возможное количество команд. При этом, разумеется, должна существовать возможность рассадить их по залам без нарушения правил.
Напишите программу, определяющую максимальное количество команд, которые можно допустить до участия в полуфинале.
Алгоритм решения:
Вводим n – количество институтов, подавших заявки. В цикле от 0 до n вводим массив a – кол-во команд от каждого института. Вводим k – кол-во залов. В цикле от 1 до n включительно проверяем: если кол-во команд от института меньше кол-ва залов, то (максимальное кол-во команд) мы прибавляем кол-во команд от института, иначе прибавляем кол-во залов.
Автобусы - 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, иначе мы прибавляем еще одну банку.
Семестровые задачи
Задание 1
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
void main()
{ double h, b, n, a, i, x, j, d, p, max, y;
cout << "enter h, b, n :";
cin >> h >> b >> n;
for (i = 1; i <= 3; i++) {
cout << "enter a :";
cin >> a;
x = b + h;
y = 0.8 + 2 * sin(x) - 5.5 * sin(a)*sin(a);
d = fabs(y);
max = d;
p = d;
for (j = 2; j <= n; j++) {
x = b + j*h;
y = 0.8 + 2 * sin(x) - 5.5 * sin(a)*sin(a);
d = fabs(y);
p = p*d;
if (d > max) max = d;
}
cout << "p= " << p << " max= " << max << endl;
}system("pause");
}
Задание 2
Задание 3