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

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

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

Добавлен: 17.03.2024

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

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

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

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

Строки




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


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

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




INPUT.TXT

OUTPUT.TXT

1

6116

YES

2

1231

NO
Входной файл INPUT.TXT содержит натуральное число N (1000 ≤ N ≤ 9999).

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

В выходной файл OUTPUT.TXT следует вывести слово «YES», если число N является палиндромом, или «NO» – если нет.
#include

#include

using namespace std;

int main(){

char a,b,c,d;

cin>>a>>b>>c>>d;

if (a==d && b==c) cout<<"YES"; else cout<<"NO";

return 0; }

Задача 75 (№ 66) Клавиатура (Сложность: 11%)


Для данной буквы латинского алфавита нужно вывести справа стоящую букву на стандартной клавиатуре. При этом клавиатура замкнута, т.е. справа от буквы «p» стоит буква «a», от буквы «l» стоит буква «z», а от буквы «m» — буква «q».

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





INPUT

OUTPUT

1

q

w

2

t

y

3

p

a

4

l

z

5

m

q
Входной файл содержит один символ — маленькую букву латинского алфавита.

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


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

#include

#include

using namespace std;

int main() {

Для замкнутости первый символ q повторяем в конце строки s

int k,i;

char e;

cin>>e;

string s="qwertyuiopasdfghjklzxcvbnmq";

for (i = 0; i <=25;i++){   

if (s[i]==e) cout<
}

return 0;}

Задача 76 (№ 504) Цветочки (Сложность: 12%)

В рождественский вечер на окошке стояло три цветочка, слева на право: герань, крокус и фиалка. Каждое утро Маша вытирала окошко и меняла местами стоящий справа цветок с центральным цветком. А Таня каждый вечер поливала цветочки и меняла местами левый и центральный цветок. Требуется определить порядок цветов ночью по прошествии K дней.

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





INPUT.TXT

OUTPUT

1

1

VGC

2

5

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

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


В выходной файл OUTPUT.TXT требуется вывести три латинских буквы: «G», «C» и «V» (заглавные буквы без пробелов), описывающие порядок цветов на окошке по истечении K дней (слева направо). Обозначения: G – герань, C – крокус, V – фиалка.


1 способ

2 способ

#include

#include

using namespace std;

int main() {

int k,i;

 

cin>>k;

string s="GCV";

 

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

string d="";

string f="";

d=d+s[0]+s[2]+s[1];

f=f+d[1]+d[0]+d[2];

s=f;

}

    cout<
return 0; }

#include

#include

using namespace std;

int main(){

 char s[300]="GCV";

   char s1;

   int n,i;

   cin>>n;

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

    s1=s[2];

    s[2]=s[1];

    s[1]=s1;

    s1=s[1];

    s[1]=s[0];

    s[0]=s1;

   }

   cout<
   return 0;}


Задача 77 (№ 940) Орфография (Сложность: 13%)

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

Входные данные. Входной файл INPUT.TXT содержит целое число K - номер лишней буквы, а затем через один или несколько пробелов записано слово S, состоящее из английских букв верхнего регистра. Гарантируется, что номер буквы не превышает длину слова. Длина слова не более 80 символов.

Выходные данные. В выходной файл OUTPUT.TXT выведите исправленное слово.




INPUT.TXT

OUTPUT.TXT

1

4

MISTSPELL


MISSPELL

2

2

ABC


AC
#include

#include

using namespace std;

int main() {

string str;

int n;

cin >> n;

cin >> str;

str.erase(n-1,1); //удаляет из строки 1 символ, начиная с (n-1)-ого

cout<< str;

return 0; }
1   ...   28   29   30   31   32   33   34   35   ...   38



Задача 78 (№ 839) Всем известно (Сложность: 14%)

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






INPUT.TXT

OUTPUT.TXT

1

11111101010011

NO

2

11

YES
Для этого Паша провел опрос всех людей, попавшихся ему под руку в известной социальной сети. Результаты опроса он записал в текстовый файл. Он ставил цифру один, если человеку был действительно известен данный факт, в противном случае в файл записывался нуль. Все было хорошо, пока Паша не открыл файл и не ужаснулся, увидев длинную последовательность из единичек. Как же он теперь будет искать среди них нули? Уже всем известно, что Паша – начинающий программист, поэтому для обработки результатов исследования он обратился к вам за помощью.

Входные данные. Входной файл содержит непустую последовательность из нулей и единиц. Длина последовательности не превышает 104.

Выходные данные. В выходной файл OUTPUT.TXT выведите слово «YES», если факт был известен всем опрошенным людям, и слово "NO" в противном случае.

#include

#include

using namespace std;



Находим позицию «0».

Если он есть в строке, то его позиция длины строки.

int main() {

string s;

char ch = '0';

cin >> s;

int pos = s.find(ch);

if (pos<=s.length()) cout<<"NO"; else cout<<"YES";

return 0;}
Задача 79 (№ 331) Время прибытия (Сложность: 15%)

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

Входные данные. Входной файл содержит две строки. В первой строке задано время отправления, а во второй строке – время в пути. Время отправления задается в формате «HH:MM», где HH время в часах, которое принимает значение от 00 до 23,




INPUT.TXT

OUTPUT.TXT

1

00:00
10 10

10:10

2

01:02
4 6

05:08

3

11:00
22 0

09:00
ММ – время в минутах, которое принимает значение от 00 до 59. Время в пути задается двумя неотрицательными целыми числами – количество часов и количество минут. Числа разделяются одним пробелом. Количество часов не превышает 120, минут – 59.

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

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


#include

using namespace std;

int a, b, d, e, f, ans;

char c;

main(){

cin >> a >> c >> b;

cin >> f >> e;

b += e;

if(b >= 60){

ans = b / 60;

b = b % 60;

}

a = a + f+ ans;

if(a >= 24) a = a % 24;

if(a < 10) cout << 0;

cout << a << ":";

if(b < 10) cout << 0;

cout << b; }



Используем глобальные переменные
складываем минуты, переводим в часы


складываем часы, убираем полные сутки.
Т.к. нужно вывести 05:08, а не 5:8, то возможно нужно добавить нули перед часами и минутами


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


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

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





INPUT.TXT

OUTPUT.TXT

1

00101110000110

4
В единственной строке входного файла INPUT.TXT записана последовательность нулей и единиц (без пробелов). Суммарное количество цифр не превышает 100.

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


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


#include

#include

using namespace std;

int main() {

string s;

cin >> s;

int k=0;

int max=0;

int n=s.length();

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

if (s[i]=='0') {k++;

if (k>max) max=k;}

else k=0; }

cout<
return 0;}

Считаем k -количество нулей и сразу сравниваем это количество с мах. Если встречается 1, то k=0.




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


Однажды в просторах рунета появился следующий ребус:




INPUT.TXT

OUTPUT

1

157892

3

2

203516

2

3

409578

4

4

236271

1
157892 = 3 203516 = 2 409578 = 4 236271 = ?

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

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


Во входном файле INPUT.TXT записано целое число N (0 <= N <= 10100).

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


В выходной файл выведите одно число – количество кругляшей в числе N.

#include

#include

using namespace std;

int main() {

string s;

cin >> s;

int k=0;

int n=s.length();

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

if (s[i]=='6') k++;

if (s[i]=='8') k=k+2;

if (s[i]=='9') k++;

if (s[i]=='0') k++; }

cout<
return 0;}

Задача 82 (№ 711) Соревнование картингистов (Сложность: 18%)


После очередного этапа чемпионата мира по кольцевым автогонкам на автомобилях с открытыми колесами Формула-А гонщики собрались вместе в кафе, чтобы обсудить полученные результаты. Они вспомнили, что в молодости соревновались не на больших болидах, а на картах – спортивных автомобилях меньших размеров. Друзья решили выяснить победителя в одной из гонок на картах. Победителем гонки являлся тот гонщик, у которого суммарное время прохождения всех кругов трассы было минимальным.

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




INPUT.TXT

OUTPUT.TXT

1

5 3
Sumaher
2 1 1
Barikelo
2 1 2
Olonso
1 2 1
Vasya
1 1 1
Fedya
1 1 1

Vasya
Входные данные. Первая строка входного файла INPUT.TXT содержит два целых числа n и m (1 ≤ n, m ≤ 100). Последующие 2∙n строк описывают прохождение трассы каждым из участников. Описание прохождения трассы участником состоит из двух строк. Первая строка содержит имя участника с использованием только английских букв (строчных и заглавных). Имена всех участников различны, строчные и заглавные буквы в именах различаются.

Вторая строка содержит m положительных целых чисел, где каждое число – это время прохождения данным участником каждого из m кругов трассы (каждое из этих чисел не превосходит 1000). Длина каждой строки с именем участника не превышает 255 символов.

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

#include

#include

using namespace std;

int main(){

int n, m,t;

string minStr, Str;

long long min=1000000;

cin>>n>>m;

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

long long sum=0;

for(int j=0;j
cin>>t;

sum+=t; }

if(sum
min=sum;

minStr=Str; } }

cout<
return 0; }


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





INPUT.TXT

OUTPUT.TXT

1

.OX
.XO
XXO

Win

2

OXO
.OX
OXX

Lose

3

XOX
XOX
OXO

Draw
Крестики-нолики – логическая игра между двумя противниками на квадратном поле 3 на 3 клетки. Один из игроков играет «крестиками» (тот, кто ходит первым), другой – «ноликами». Игроки по очереди ставят на свободные клетки поля знаки (один всегда «крестики», другой всегда «нолики»). Первый, выстроивший в ряд три своих фигуры по вертикали, горизонтали или диагонали, выигрывает и на этом игра заканчивается. В том случае, когда все клетки заполнены и победитель не определен, игра завершается ничьей.

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

Входные данные. Входной файл INPUT.TXT содержит информацию об игровом поле – три строки по три символа в каждой. Символ «X» (ASCII 88) означает «крестик», символ «O» (ASCII 79) - «нолик», а символ «.» (ASCII 46) - пустую клетку.

Выходные данные. В выходной файл OUTPUT.TXT выведите в случае победы первого игрока «Win», в случае его проигрыша – «Lose» и «Draw» в случае ничьей.
#include

using namespace std;

int main(){

    string s1,s2,s3;

    int sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8;

    cin>>s1>>s2>>s3;

    sum1=s1[0]+s1[1]+s1[2]; //складываем коды символов по

    sum2=s2[0]+s2[1]+s2[2]; //всем строкам, столбцам и диагоналям

    sum3=s3[0]+s3[1]+s3[2];

    sum4=s1[0]+s2[0]+s3[0];

    sum5=s1[1]+s2[1]+s3[1];

    sum6=s1[2]+s2[2]+s3[2];

    sum7=s1[0]+s2[1]+s3[2];

    sum8=s3[0]+s2[1]+s1[2];

    if (sum1==88*3){cout<<"Win";return 0;} //Х выигрывает, если

    if (sum1==79*3){cout<<"Lose";return 0;} //любая сумма = 88*3

    if (sum2==88*3){cout<<"Win";return 0;}

    if (sum2==79*3){cout<<"Lose";return 0;}

    if (sum3==88*3){cout<<"Win";return 0;} //О выигрывает, если

    if (sum3==79*3){cout<<"Lose";return 0;} //любая сумма=79*3

    if (sum4==88*3){cout<<"Win";return 0;}

    if (sum4==79*3){cout<<"Lose";return 0;}

    if (sum5==88*3){cout<<"Win";return 0;}

    if (sum5==79*3){cout<<"Lose";return 0;}

    if (sum6==88*3){cout<<"Win";return 0;}

    if (sum6==79*3){cout<<"Lose";return 0;}

    if (sum7==88*3){cout<<"Win";return 0;}

    if (sum7==79*3){cout<<"Lose";return 0;}

    if (sum8==88*3){cout<<"Win";return 0;}

    if (sum8==79*3){cout<<"Lose";}

    else cout<<"Draw";

    return 0;}


Задача 84 (№ 46) Число E (Сложность: 20%)





INPUT.TXT

OUTPUT.TXT

1

0

3

2

25

2.7182818284590452353602875

3

13

2.7182818284590
Выведите в выходной файл округленное до n знаков после десятичной точки число E. Число Е, округленное до 25 знаков после десятичной точки, равно 2.7182818284590452353602875.

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


Входной файл содержит целое число n (0 ≤ n ≤ 25).
1   ...   30   31   32   33   34   35   36   37   38

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


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


#include

#include

using namespace std;

int main() {

string e="2.7182818284590452353602875";

int n,i;

cin >> n;

if (n==0) cout<<3; else {

if (e[n+2]>'4') e[n+1]++;

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

    cout << e[i];}

}

return 0; }

Вводим строку е
Исключение n=0.

Округляем.
Выводим n+1 символ строки (0 символ=2, 1 символ=.)



Задача 85 (№ 336) Лифт (Сложность: 20%)

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




INPUT.TXT

OUTPUT.TXT

1

11

3

2

21212

2

3

1221221221221

6
Младшему брату Вилли Дилли очень нравится кататься на новом лифте. Он катается на нём до тех пор, пока не побывает на каждом из этажей хотя бы по одному разу. После этого Дилли довольный возвращается домой. Зная порядок, в котором Дилли нажимал на кнопки лифта, попробуйте определить общее количество этажей в доме Вилли и Дилли.

Входные данные. Первая строка входного файла INPUT.TXT содержит последовательность нажатий на кнопки лифта. Символ «1» означает, что была нажата первая кнопка, а символ «2» – что была нажата вторая кнопка. Символы «1» и «2» не разделены пробелами. Количество нажатий не превосходит 100. Гарантируется, что лифт никогда не опускался ниже первого и не поднимался выше последнего этажа.

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

В выходной файл вывести одно число – количество этажей в доме Вилли и Дилли.


Тест

1

2

2

1

2

2

1

2

2

1

2

2

1

этаж

2

1

0

1

0

-1

0

-1

-2

-1

-2

-3

-2