ВУЗ: Не указан

Категория: Решение задач

Дисциплина: Не указана

Добавлен: 17.03.2024

Просмотров: 307

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Составители:

Ильина Е.А,

Волынская О.С,

учителя информатики КГУ «Гимназия №9» г.Караганды

Линейные алгоритмы

Задача 1 (№ 1) A+B (Сложность: 1%)

Входные данные. В единственной строке входного файла INPUT.TXT записано два натуральных числа через пробел, не превышающих 109.

Выходные данные. В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число — сумму чисел А и В.

Задача 3 (№ 903) Бисер (Сложность: 2%)

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

Задача 4 (№ 942) Олимпиада (Сложность: 2%)

Задача 5 (№ 195). Эния (Сложность: 3%)

Задача 7 (№ 33) Два бандита ( Сложность: 4%)

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

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

Задача 10 (№ 819) Прямоугольный параллелепипед

(Сложность: 10%)

     x=(h*(l+w)*2)/16; нужно учесть, что банка может быть неполной

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

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

Задача 14 (№ 780) Футбол (Сложность: 22%)

Выходные данные. В выходной файл OUTPUT.TXT выведите одно число – общее количество забитых мячей.

2 способ

Задача 15 (№ 900) Три грибника (Сложность: 23%)

Разветвляющиеся алгоритмы

Задача 16 (№ 25) Больше-меньше (Сложность: 3%)

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

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

Задача 19 (№ 8)Арифметика (Сложность: 5%)

Задача 21 (№ 755) Сбор земляники (Сложность: 6%)

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

Выходные данные. В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число – через сколько часов зазвонит будильник.

Задача 33 (№ 948) Сроки в книге (Сложность: 13%)

Выходные данные. В выходной файл OUTPUT.TXT выведите одно целое число — минимальное количество значков, которое требуется подготовить.

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

Задача 37 (№ 929) Игральные кубики (Сложность: 15%)

Входные данные. Входной файл INPUT.TXT содержит одно натуральное число n — количество очков, которые получил первый игрок (n ≤ 1010).

Задача 38 (№ 263) Метро (Сложность: 16%)

Задача 39 (№ 844) Поля (Сложность: 16%)

Входные данные. Входной файл INPUT.TXT содержит целые числа a и b – длины сторон прямоугольника (1 < = a*b ≤ 1014).

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

Задача 40 (№ 294) Болты и гайки (Сложность: 17%)

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

Выходные данные. В выходной файл выведите одно целое число – размер ущерба.

Задача 41 (№ 606)Треугольник – 3 (Сложность: 17%)

Задача 42 (№ 952) В автобусе (Сложность: 18%)

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

Задача 43 (№ 952) Кастинг (Сложность: 19%)

Требуется написать программу, которая по заданным числам n, a, b и с определяет минимальное или максимальное количество актеров, с которыми режиссер должен переговорить.

1, если в данном тесте требуется определить минимальное количество актеров;

Вторая строка входного файла содержит разделенные пробелами четыре целых числа: n, a, b, с (1 ≤ n ≤ 10 000, 0 ≤ a ≤ n, 0 ≤ b ≤ n, 0 ≤ c ≤ n).

Задача 45 (№ 68) Дом - Школа – Дом (Сложность: 21%)

Выходные данные. В выходной файл OUTPUT.TXT выведите YES, если палатки указанным образом выбрать можно, и NO в противном случае.

Задача 49 (№ 692) Бинарные числа (Сложность: 8%)

Задача № 52 (№ 233). Автобусная экскурсия (Сложность: 14%)

Выходные данные. В выходной файл OUTPUT.TXT выведите ответ на задачу.

Задача 55 (№ 264) Оттепель(Сложность: 17%)

Задача 56 (№ 949) Фибоначчиева последовательность. (Сл.17%)

Задача 57 (№ 778) Офис (Сложность: 18%)

Задача 60 (№ 947) Карточки – 3 (Сложность: 22%)

Входные данные. Входной файл INPUT.TXT содержит единственное положительное число X - длина нависающей части. Число X задано с двумя знаками после запятой и 0.01 ≤ x < 10.00.

Задача 62 (№ 716) Треугольник Максима (Сложность: 25%)

Задача 63 (№ 272) Сумма max и мin (Сложность: 26%)

Массивы

Задача 66 (№ 149). Разворот (Сложность: 9%)

Выходные данные. В выходной файл OUTPUT.TXT выведите ответ на задачу.

Задача 69 (№ 637) NEERC (Сложность: 17%)

Задача 70 (№ 293) Налоги (Сложность: 20%)

Выходные данные. В выходной файл выведите одно число - номер фирмы, от которой государство получает наибольший налог. Если таких фирм несколько, выведите фирму с наименьшим номером.

Строки

Задача 74 (№ 324) Четырехзначный палиндром ( Сл.: 10%)

Задача 80 (№ 43) Нули (Сложность: 16%)

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

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

Задача 81 (№ 297) Кругляши (Сложность: 16%)

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

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

Задача 83 (№ 895) Крестики-нолики (Сложность: 19%)

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

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

Выходные данные. В выходной файл OUTPUT.TXT выведите ответ на задачу.

Задача 87 (№ 633) ACM World Finals (Сложность: 20%)

Задача 89 (№ 315) Наименьшая система счисления (Сл.: 26%)

Задача 90 (№ 277) Школьная алгебра (Сложность: 27%)

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

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

Задача 57 (№ 778) Офис (Сложность: 18%)


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

Теперь он ломает голову над загадкой – сколько всего сотрудников работает в этом офисе. Напишите программу, которая ответит Васе на этот вопрос.

Входные данные. В единственной строке входного файла INPUT.TXT записано 31 целое неотрицательное число. Эти числа описывают количество сотрудников, пришедших в офис в соответствующие дни месяца. Гарантируется, что входные данные корректны.

Выходные данные. В единственную строку выходного файла OUTPUT.TXT нужно вывести единственное число – общее количество сотрудников офиса. Гарантируется, что ответ не превышает 100.
#include




INPUT.TXT

OUTPUT.TXT

1

10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 0 0 0 0

10
using namespace std;

int main() {

    int a, sum;

    for(int i=0;i<31;i++){

        cin>>a;

        sum+=a;    } 

    cout<
    return 0; }

Задача 58 (№ 694) Лентяй.(Сложность: 21%)


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

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

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

В первой строке входного файла INPUT.TXT содержится натуральное число N – количество предметов, которые нужно сдать Валере (N <=100). Далее идет N строк, каждая из которых состоит из двух чисел A и B, задающих отрезок работы очередного преподавателя (1 <= A <= B <= 31).

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

В выходной файл OUTPUT.TXT выведите «YES», если возможно встретить всех преподавателей за один день, или «NO», если это сделать невозможно.






INPUT

OUTPUT

1

1
1 2

YES

2

2
1 2
3 4

NO

3

3
1 8
3 5
4 9

YES
#include

using namespace std;

int main(){

    int n,a,b,i,max,min;

cin>>n;

max=0;

min=35;

for (i = 1; i<=n; i++){

    cin>>a>>b;

    if (a>max) max=a;

    if (b
 }

if (max<=min) cout<<"YES";

else cout<<"NO";

return 0; }

Задача 59 (№ 888) Карусель (Сложность: 22%)


Карусель – одна из популярных форм проведения командных соревнований по решению задач. Наибольшую известность в использовании данной модели в России получил ресурс «Интернет-карусели», расположенный в сети Интернет по адресу http://karusel.desc.ru.

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

Начисление баллов происходит согласно следующей схеме:

  • первая задача стоит 3 балла;

  • если к задаче дан верный ответ, то команда получает ее стоимость, а следующая задача будет стоить на 1 балл больше;

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




INPUT.TXT

OUTPUT.TXT

1

3
1 1 1

12

2

9
1 0 1 1 1 1 0 1 1

30
Вам требуется написать программу, которая по результатам ответов команды определит итоговый балл.
Входные данные. Первая строка входного файла INPUT.TXT содержит натуральное число N – количество задач в карусели (N ≤ 105). Во второй строке расположены N цифр 0 или 1, разделенные пробелом; i-я цифра соответствует корректности ответа команды на i-ю задачу (0 – неверный ответ, 1 – верный ответ).
Выходные данные. В выходной файл OUTPUT.TXT выведите целое число – количество набранных баллов.


#include

using namespace std;

int main() {

unsigned long long n,c,b=0,t=3;

cin>>n;

for(int i=0;i
cin>>c;

if(c==1){b+=t; t++; }

if(c==0) {

if(t-3>=3) {t-=3;}

else t=3; }

}

cout<
return 0; }

Пояснение ко второму тесту:

тест

1

0

1

1

1

1

0

1

1

Цена задачи

3

4

3

4

5

6

7

4

5

Количество баллов

3

0

3

4

5

6

0

4

5

3+3+4+5+6+4+5=30




Задача 60 (№ 947) Карточки – 3 (Сложность: 22%)


Студент-первокурсник Антон никак не может понять странную формулу

1/2 + 1/3 + 1/4 + ... + 1/n + ... → бесконечность

Хорошо, что у Антона есть друг Васька, который отлично знает математику. Вот и придумал Васька, как Антошке объяснить эту самую бесконечность. Взял колоду карт и стал раскладывать карты на столе. Если есть одна карта, она нависает над столом на 1/2 длины карты. Если есть две карты, то верхняя нависает над нижней на 1/2 длины карты, а нижняя - нависает над столом на 1/3 длины. В итоге получается нависание 1/2+1/3=5/6. А если у нас есть N карт, то длина нависающей части уже 1/2+1/3+1/4+...+1/N. И стал Васька с Антоном в такую игру играть: Антон называет какое-нибудь число, а Вася называет минимальное количество карт, которое нужно положить, чтобы длина нависающей части была бы не меньше этого числа.

Напишите программу, которая помогает Васе каждый раз давать правильный ответ.


Входные данные. Входной файл INPUT.TXT содержит единственное положительное число X - длина нависающей части. Число X задано с двумя знаками после запятой и 0.01 ≤ x < 10.00.




INPUT.TXT

OUTPUT.TXT

1

1.00

3 card(s)

2

3.71

61 card(s)

3

0.04

1 card(s)

4

5.19

273 card(s)
Выходные данные. В выходной файл OUTPUT.TXT выведите ответ на задачу по формату, приведенному в примерах.

#include

using namespace std;

int main(){

double n,s,i;

cin>>n ;

s=0.5; i=2;

while (s
    i++;

    s+=(1/i); }

cout<
return 0; }


Задача 61 (№ 760) Транспорт (Сложность: 24%)


Все автовладельцы рано или поздно встречаются с инспекторами ГИБДД. Ваша задача состоит в том, чтобы рассчитать минимальное время прохождения автомобилем прямого участка дороги, на котором стоят инспекторы. Известно, что на данном участке инспекторы останавливают все проезжающие мимо автомобили. Примем следующие допущения: автомобили являются материальными точками, которые могут мгновенно останавливаться или набирать максимальную скорость. Автомобиль начинает свой путь в точке 0 и заканчивает его в точке L.

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




INPUT.TXT

OUTPUT.TXT

1

3 60 45
0 5 25 5 40 5

60.00

2

2 78 150
2 10 78 1

126.38
Первая строка входного файла INPUT.TXT содержит три числа: N – количество инспекторов (0 ≤ N ≤ 30), V – максимальная скорость автомобиля (км/ч) и L – длина участка дороги (км) (1 ≤ V, L ≤ 200). Вторая строка содержит N пар чисел xi – расстояние от точки 0 до инспектора (0 ≤ xi ≤ L) и ti – время (мин), на которое он останавливает машину (1 ≤ ti ≤ 10). Все инспектора стоят в разных точках. Все числа во входных данных целые.

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

В выходной файл OUTPUT.TXT выведите время преодоления участка дороги автомобилем в минутах с точностью до двух знаков после запятой (вещественное число с ровно двумя цифрами после запятой).

#include

using namespace std;

int main() {

int n, x ;

float v, l, t, c;

cin >> n >> v >> l;

c = 0;

for (int i = 0; i < n; i++) {

cin >> x>>t;

c=c+t; }

t=(l / v) * 60 + c;

printf("%.2f", t);

return 0; }



Условие задачи содержит лишние данные (расстояние от точки 0 до инспектора).
Достаточно посчитать время задержки машины инспекторами и прибавить время прохождения всего участка в минутах t=(l / v) * 60.
printf("%.2f", t); - вывод вещественного числа с двумя знаками после запятой.

1   ...   21   22   23   24   25   26   27   28   ...   38

Задача 62 (№ 716) Треугольник Максима (Сложность: 25%)


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

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

Вам Максим показал запись, в которой приведена последовательность частот, выставляемых им на тюнере, и про каждую ноту, начиная со второй, записано – ближе или дальше она к звуку треугольника, чем предыдущая нота. Заранее известно, что частота звучания треугольника Максима составляет не менее 30 герц и не более 4000 герц.

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




INPUT.TXT

OUTPUT.TXT

1

3
440.0
220.0 closer
300.0 further

30.0 260.0

2

4
554.0
880.0 further
440.0 closer
622.0 closer

531.0 660.0

Входные данные. Первая строка входного файла INPUT.TXT содержит целое число n – количество нот, которые воспроизводил Максим с помощью тюнера (2 ≤ n ≤ 1000). Последующие n строк содержат записи Максима, причем каждая строка содержит две компоненты: вещественное число fi – частоту, выставленную на тюнере, в герцах (30 ≤ fi ≤ 4000), и слово «closer» или слово «further» для каждой частоты, кроме первой. Частоты fi заданы с точностью, не превышающей 10 цифр после запятой.

Слово «closer» означает, что частота данной ноты ближе к частоте звучания треугольника, чем частота предыдущей ноты, что формально описывается соотношением: |fi – fтреуг.| < |fi-1 – fтреуг.| Слово «further» означает, что частота данной ноты дальше, чем предыдущая. Если оказалось, что очередная нота так же близка к звуку треугольника, как и предыдущая нота, то Максим мог записать любое из двух указанных выше слов. Гарантируется, что результаты, полученные Максимом, непротиворечивы.

Выходные данные. В выходной файл OUTPUT.TXT необходимо вывести через пробел два вещественных числа – наименьшее и наибольшее возможное значение частоты звучания треугольника, изготовленного Максимом. Числа следует выводить с точностью, не худшей 10-6.


# include

#include

#include

#include

using namespace std;
int main(){

int n;

string word;

double prev,cur,curMin, curMax;

double totalMin=30;

double totalMax=4000;

cin>>n;

cin>>prev;
for (int i=1; i
cin>>cur>>word;
if ((cur>prev && word=="closer") || (cur


{curMin=(cur+prev)/2;

curMax=4000;}
else if ((cur
prev&&word=="further")){

curMin=30;

curMax=(cur+prev)/2;}

else{curMin=30;

curMax=4000;}
totalMin=max(totalMin,curMin);

totalMax=min(totalMax,curMax);
prev=cur;}
printf ("%.7f %.7f", totalMin,totalMax);

return 0; }

См. подробный разбор https://www.youtube.com/watch?v= OLNkFH6GLu8
prev – предыдущая точка

cur – текущая точка

mid=(cur+prev)/2 – середина между ними
closer: от mid в сторону cur.

further: от mid в сторону prev.
cur>prev, closer: допустимый интервал [mid,4000]

cur<prev, further: допустимый интервал [mid,4000]

cur<prev, closer: допустимый интервал [30,mid]

cur>prev, further: допустимый интервал [30,mid]
Начальный интервал [30,4000]. Для каждой пары получили интервал. Нужно получить пересечение интервалов. [max(min1,min2), min(max1,max2)]






Библиотека позволяет вычислять max , min



Текущая точка становится предыдущей


Задача 63 (№ 272) Сумма max и мin (Сложность: 26%)


Задана последовательность целых чисел. Числа нумеруются по порядку следования, начиная с единицы. Требуется написать программу, которая найдет сумму максимума из чисел с четными номерами и минимума из чисел с нечетными номерами – max{a2, a4, …}+min{a1, a3, …}.

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

Входной текстовый файл содержит в единственной строке последовательность от 2 до 2*105 целых чисел, которые по модулю не превышают 10000.

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




INPUT.TXT

OUTPUT.TXT

1

1 2

3

2

1 -2 3 -4 5

-1
Выходной текстовый файл OUTPUT.TXT должен содержать одно целое число - сумму максимума из чисел с четными номерами и минимума из чисел с нечетными номерами.