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

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

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

Добавлен: 17.03.2024

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

Скачиваний: 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%)

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

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


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


В прошлом году Вася пошел в школу и научился считать. В этом году он изучил таблицу умножения и теперь умеет перемножать любые числа от 1 до 10 без ошибок. Друг Петя рассказал ему про системы счисления, отличные от десятичной. В частности, про двоичную, восьмеричную и даже шестнадцатеричную. Теперь Вася без труда (но уже с помощью листка и ручки) может перемножать числа от 1 до 10 и в этих системах, используя перевод из нестандартной системы в десятичную и обратно из десятичной. Например, если Васе нужно перемножить числа 101 и 1001 в двоичной системе, то он сначала эти числа переводит в десятичное представление следующим образом:

(101)2=1*22+0*21+1*20=4+0+1=5

(1001)2=1*23+0*22+0*21+1*20=8+0+0+1=9

После чего перемножение чисел 5 и 9 Вася с легкостью производит в десятичной системе счисления в уме и получает число 45. Далее производится перевод из десятичной системы счисления в двоичную. Для этого Вася делит число 45 на 2 (порядок системы счисления), запоминая остатки от деления, до тех пор пока в результате не останется число 0:



Ответ составляется из полученных остатков от деления путем их записи в обратном порядке. Таким образом Вася получает результат: (101)2 * (1001)2 = (101101)2. Но теперь Вася изучает таблицу умножения чисел от 1 до 100 в десятичной системе счисления, а поскольку запомнить такую таблицу очень сложно, то Васе придется очень долго ее зубрить. Составьте для Васи программу, которая поможет ему проверять свои знания.




INPUT.TXT

OUTPUT

1

8 54 432

YES

2

16 19 777

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

Во входном файле записаны три натуральных числа A, B и C через пробел. Числа A и B <= 102, а C <= 106.

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



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

В выходной файл нужно вывести YES в том случае, если A*B=C и вывести NO в противном случае.

# include

using namespace std;

int main(){

int a,b,c,min,max;

cin>>a>>b>>c;

if (a*b==c) cout<<"YES";

else cout<<"NO";

return 0; }


Задача 20 (№ 61) Баскетбол (Сложность: 5%)


Известны результаты каждой из 4х четвертей баскетбольной встречи. Нужно определить победителя матча.



INPUT.TXT

OUTPUT

1

26 17
13 15
19 11
14 16

1

2

14 15
17 18
20 20
15 17

2

3

15 16
18 17
10 12
14 12

DRAW
Входные данные. Входной файл INPUT.TXT содержит 4 строки, в каждой строке находится два целых числа a и b – итоговый счет в соответствующей четверти. а – количество набранных очков за четверть первой командой, b – количество очков, набранных за четверть второй командой. (0 ≤ a,b ≤ 100).

Выходные данные. В выходной файл OUTPUT.TXT выведите номер выигравшей команды, в случае ничьей следует вывести «DRAW».


#include

using namespace std;

int main() {

int a1, b1, a2, b2, a3, b3, a4, b4, z, x;

cin >> a1 >> b1 >> a2 >> b2>>a3>>b3>>a4>>b4;

z =a1+a2+a3+a4;

x =b1+b2+b3+b4;

if (z == x) cout<<"DRAW";

if (z > x) cout<<"1";

if (z < x) cout<<"2";

return 0; }


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


Маша и Миша собирали землянику. Маше удалось сорвать X ягод, а Мише – Y ягод. Поскольку ягода была очень вкусной, то ребята могли какую то часть ягод съесть. По нашим подсчетам вместе они съели Z ягод. Требуется определить: сколько ягод ребята собрали в результате, при этом следует проверить, не ошиблись ли мы в расчетах, подсчитывая количество съеденных ягод (их не должно было получиться больше, чем сорванных ягод).

Входные данные. Входной файл INPUT.TXT содержит три натуральных числа X, Y и Z, не превышающих 1000. Все числа расположены в первой строке файла и разделены пробелом.




INPUT.TXT

OUTPUT.TXT

1

3 2 1

4

2

12 13 5

20

3

2 5 9

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

#include

using namespace std;

 int main() {

    int x, y, z;

    cin >> x >> y >> z;

    if ((x + y) - z >= 0) cout << (x + y) - z; else cout << "Impossible";

    return 0; }



Задача 22 (№ 539) Торт (Сложность: 6%)




INPUT

OUTPUT

1

2

1

2

3

3
На свой день рождения Петя купил торт, который имел идеально круглую форму. Петя не знал, сколько гостей придет на его день рождения, поэтому вынужден был разработать алгоритм, согласно которому он сможет быстро разрезать торт на N равных частей. Следует учесть, что разрезы торта можно производить как по радиусу, так и по диаметру.

Помогите Пете решить эту задачу, определив наименьшее число разрезов торта по заданному числу гостей.

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


Входной файл содержит натуральное число N – число гостей, включая самого виновника торжества (N <= 1000).

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


#include

#include

using namespace std;

int main(){

int n;

cin>>n;

if(n==1) cout<<0;

else{if (n%2==0){cout<
else {cout<
return 0; }



Если гостей нет (n=1) – торт не режут.

Если гостей четное число, то разрезов n/2.

Если гостей нечетное число, то разрезов n

Задача 23 (№ 754) Три толстяка (Сложность: 7%)


Три толстяка решили поспорить: кто из них самый тяжелый. После взвешивания оказалось, что их масса соответственно M1, M2 и M3 килограмм. Считается, что масса толстяка должна быть не менее 94 и не более 727 килограмм. Помогите определить массу самого тяжелого из них, либо выяснить, что была допущена ошибка при взвешивании.
Входные данные. Входной файл содержит три целых числа M1, M2 и M3. Все числа целые и не превосходят 10 000 по абсолютной величине.

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





INPUT.TXT

OUTPUT.TXT

1

98 106 214

214

2

100 100 100

100

3

93 500 1000

Error



#include

using namespace std;

int main () {

int m1, m2, m3, max;

cin>> m1 >> m2>>m3;

if (m1<94 or m1>727) {cout << "Error"; return 0;}

if (m2<94 or m2>727) {cout << "Error"; return 0;}

if (m3<94 or m3>727) {cout << "Error"; return 0;}
if (m1>m2) max=m1; else max=m2;

if (m3>max) max=m3;
cout << max; return 0; }
Задача 24 (№ 907) Мышка (Сложность: 9%)

Однажды компьютерная мышка подумала, что стоит взять про запас еще один коврик. Чтобы никто не заметил запасного коврика, мышка решила его спрятать под свой прямоугольный коврик. Пробравшись ночью на склад, мышка обнаружила там только круглые коврики. Удастся ли мышке спрятать круглый коврик под прямоугольным ковриком?

Входные данные. Входной файл INPUT.TXT содержит три натуральных числа: W, H и R, где W и H - ширина и высота прямоугольного коврика, а R – радиус запасного коврика. Все числа не превосходят значения 109.

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




INPUT.TXT

OUTPUT.TXT

1

4 7 2

YES

2

4 7 3

NO
#include

using namespace std;

int main() {

    float w, h, r;

    cin >> w >> h >> r;

    if (r * 2 <= w and r * 2 <= h) cout << "YES";  

else cout << "NO";

    return 0; }
Задача 25 (№ 970) От перестановки что-то меняется ...(Сл.: 9%)

Всем известно, что «от перестановки слагаемых сумма не изменяется». Однако, случается и так, что перестановка двух чисел приводит к более интересным последствиям. Пусть, например, заданы три числа: a1, a2, a3. Рассмотрим равенство a1+ a2= a3. Оно может быть неверным (например, если a1= 1, a2= 4, a3= 3), однако может стать верным, если поменять некоторые числа местами (например, если поменять местами a2 и a3, оно обратится в равенство 1 + 3 = 4).

Ваша задача – по заданным трем числам определить: можно ли их переставить так, чтобы сумма первых двух равнялась третьему.
Входные данные. Входной файл INPUT.TXT содержит три целых числа: a1, a2, a3 (−108 ≤ a1, a2, a3 ≤ 108). Выходные данные. В выходной файл OUTPUT.TXT выведите слово «YES», если заданные числа можно переставить так, чтобы сумма первых двух равнялась третьему. В противном случае выведите в выходной файл слово «NO».



INPUT.TXT

OUTPUT.TXT

1

3 5 2

YES

2

2 2 5

NO

3

2 2 4

YES
#include

using namespace std;

int main(){

int a1, a2, a3;

cin>>a1>>a2>>a3;

if (a1+a2==a3 || a1+a3==a2 || a2+a3==a1) cout<<"YES"; else cout<<"NO";

return 0; }
Задача 26 (№ 597) Внеземные гости (Сложность: 10%)

Недавно на поле фермера Джона были обнаружены следы приземления летающих тарелок. Об этом даже писала газета Mew Yorc Courier.

Поле фермера Джона имеет форму круга радиусом r1. По сообщениям журналистов были обнаружены два следа от летающих тарелок, имевшие форму кругов. Один из них имел радиус r2, второй - радиус r3. Также сообщается, что они находились внутри поля фермера Джона и не пересекались (при этом, они, возможно, касались друг друга и/или границы поля). Поскольку журналисты часто склонны преувеличивать масштабы событий, необходимо написать программу, которая будет проверять, могли ли иметь место события, описанные в газете.
Входные данные. Входной файл INPUT.TXT содержит три целых положительных числа - r1, r2, r3 (1 ≤ r1, r2, r3 ≤ 109).
94>94>94>

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





INPUT.TXT

OUTPUT

1

10 10 10

NO

2

10 3 4

YES
#include

using namespace std;

int main (){

    int r1, r2, r3;

    cin>>r1>>r2>>r3;

    if (r2+r3<=r1) cout<<"YES"; else cout<<"NO";

    return 0; }


Задача 27 (№ 757) Спирт (Сложность: 10%)


Каждому школьнику из курса органической химии известна формула молекулы этилового спирта – C2H5(OH). Откуда видно, что молекула спирта состоит из двух атомов углерода (C), шести атомов водорода (H) и одного атома кислорода (O).

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

Входные данные. Первая строка входного файла INPUT.TXT содержит 3 натуральных числа: C, Н и O – количество атомов углерода, водорода и кислорода соответственно. Все числа разделены пробелом и не превосходят 1018.

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


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



INPUT.TXT

OUTPUT.TXT

1

2 6 1

1

2

10 5 12

0

3

18 35 3

3
#include

using namespace std;

int main(){

long long int C,H,O, min;

cin>>C>>H>>O;

 if(C>=2) min=C/2;

if(H>=6){ if ( (H/6)<=min ) min=H/6;}

 if(O>=1){if ( (O/1)<=min ) min=O/1;}

  cout<Задача 28 (№ 892) Время года (Сложность: 10%)

По заданному номеру месяца в году требуется определить время года.

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


Входной файл INPUT.TXT содержит натуральное число N (N≤100) – номер месяца.

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





INPUT.TXT

OUTPUT.TXT

1

3

Spring

2

15

Error
В выходной файл OUTPUT.TXT выведите для летних месяцев значение «Summer», для зимних – «Winter», для весенних – «Spring», для осенних – «Autumn». Если число не соответствует возможному значению месяца, то в этом случае следует вывести «Error».

#include

 using namespace std;

 int main() {

    int a;

    cin >> a;

    if (a == 1 or a == 2 or a == 12) cout << "Winter";

    if  (a == 3 or a == 4 or a == 5) cout << "Spring";

    if  (a == 6 or a == 7 or a == 8) cout << "Summer";

    if  (a == 9 or a == 10 or a == 11) cout << "Autumn";

    if  (a >12)  cout<<"Error";

    return 0; }


Задача 29 (№ 685) Золотой песок (Сложность: 10%)


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

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




INPUT.TXT

OUTPUT

1

1 2 3 3 2 1

14
Входные данные. В единственной строке входного файла INPUT.TXT записано 6 натуральных чисел A1, A2, A3, B1, B2, B3, записанных в одной строке через пробел. Все числа не превосходят 100.

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

#include

#include

using namespace std;

int main(){

int a1,a2,a3,b1,b2,b3,x;

cin>>a1>>a2>>a3>>b1>>b2>>b3;

 

Расставляем данные по возрастанию

if (a2
if (a3
if (a2
 

if (b2
if (b3
if (b2
 

cout<
return 0; }
Задача 30 (№ 777) Будильник (Сложность: 12%)

Известный исследователь Чарльз Ф. Мантц, устав от долгого путешествия через джунгли, лег спать в 10 часов вечера, но предварительно он завел будильник на 12 часов следующего дня. Но проспать 14 часов ему не удалось – будильник зазвонил через 2 часа. Исследователь забыл, что на будильнике, имеющем 12-тичасовой циферблат, можно задать время до звонка только менее 12 часов.

Напишите программу, которая определяет, сколько часов успеет проспать исследователь, прежде чем будильник его разбудит.
Входные данные. В единственной строке входного файла INPUT.TXT записаны два целых числа S и T (1 ≤ S, T ≤ 12), разделенные одним пробелом - час, когда исследователь лег спать, и час, на который он установил будильник.

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





INPUT.TXT

OUTPUT.TXT

1

10 12

2



#include

using namespace std;

int main() {

    int s,t;

    cin >> s >> t;

    if (s
    return 0; }



Задача 31 (№ 854) Кондиционер (Сложность: 12%)

В офисе, где работает программист Петр, установили кондиционер нового типа. Этот кондиционер отличается особой простотой в управлении. У кондиционера есть всего лишь два управляемых параметра: желаемая температура и режим работы.

Кондиционер может работать в следующих четырех режимах:

  • «freeze» — охлаждение. В этом режиме кондиционер может только уменьшать температуру. Если температура в комнате и так не больше желаемой, то он выключается.

  • «heat» — нагрев. В этом режиме кондиционер может только увеличивать температуру. Если температура в комнате и так не меньше желаемой, то он выключается.

  • «auto» — автоматический режим. В этом режиме кондиционер может как увеличивать, так и уменьшать температуру в комнате до желаемой.

  • «fan» — вентиляция. В этом режиме кондиционер осуществляет только вентиляцию воздуха и не изменяет температуру в комнате.

Кондиционер достаточно мощный, поэтому при настройке на правильный режим работы он за час доводит температуру в комнате до желаемой.

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



INPUT.TXT

OUTPUT.TXT

1

10 20
heat

20

2

10 20
freeze

10
Входные данные. Первая строка входного файла INPUT.TXT содержит два целых числа troom и tcond, разделенных ровно одним пробелом (–50 ≤ troom ≤ 50, –50 ≤ tcond ≤ 50). Вторая строка содержит одно слово, записанное строчными буквами английского алфавита — режим работы кондиционера, как указано выше.

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


using namespace std;

int main() {

int tRoom, tCond;

string func;

cin >> tRoom >> tCond;

cin >> func;

if (func=="fan") cout << tRoom;

if (func =="auto") cout << tCond;

if (func=="heat") {if (tRoom <= tCond) cout << tCond; else cout << tRoom;}

if (func =="freeze") {if (tRoom >= tCond) cout << tCond; else cout << tRoom;}

return 0; }
Задача 32 (№ 933) Телефон (Сложность: 12%)

Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до А минут в месяц – В рублей за минуту, а разговоры сверх установленной нормы оплачиваются из расчета С рублей за минуту. Требуется написать программу, вычисляющую плату за пользование телефоном для разговоров продолжительностью Т минут в месяц.

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


Входной файл INPUT.TXT содержит натуральные числа A, B, C и T, не превышающие 1000. Числа располагаются в одной строке и разделены пробелами.

Выходные данные. В выходной файл OUTPUT.TXT выведите единственное целое число – месячную плату за пользование телефоном.



#include




INPUT.TXT

OUTPUT.TXT

1

30 2 3 30

60

2

20 1 3 30

50
#include

using namespace std;

int main() {

int a,b,c,t;

long int s;

cin >> a >> b >> c>>t;

if (t>a) s=a*b+(t-a)*c; else s=b*t;

cout <