Добавлен: 17.03.2024
Просмотров: 598
Скачиваний: 2
СОДЕРЖАНИЕ
учителя информатики КГУ «Гимназия №9» г.Караганды
Задача 1 (№ 1) A+B (Сложность: 1%)
Задача 3 (№ 903) Бисер (Сложность: 2%)
Задача 4 (№ 942) Олимпиада (Сложность: 2%)
Задача 5 (№ 195). Эния (Сложность: 3%)
Задача 7 (№ 33) Два бандита ( Сложность: 4%)
Задача 10 (№ 819) Прямоугольный параллелепипед
x=(h*(l+w)*2)/16; нужно учесть, что банка может быть неполной
Задача 14 (№ 780) Футбол (Сложность: 22%)
Выходные данные. В выходной файл OUTPUT.TXT выведите одно число – общее количество забитых мячей.
Задача 15 (№ 900) Три грибника (Сложность: 23%)
Задача 16 (№ 25) Больше-меньше (Сложность: 3%)
Задача 19 (№ 8)Арифметика (Сложность: 5%)
Задача 21 (№ 755) Сбор земляники (Сложность: 6%)
Задача 33 (№ 948) Сроки в книге (Сложность: 13%)
Задача 37 (№ 929) Игральные кубики (Сложность: 15%)
Задача 38 (№ 263) Метро (Сложность: 16%)
Задача 39 (№ 844) Поля (Сложность: 16%)
Задача 40 (№ 294) Болты и гайки (Сложность: 17%)
Выходные данные. В выходной файл выведите одно целое число – размер ущерба.
Задача 41 (№ 606)Треугольник – 3 (Сложность: 17%)
Задача 42 (№ 952) В автобусе (Сложность: 18%)
Задача 43 (№ 952) Кастинг (Сложность: 19%)
1, если в данном тесте требуется определить минимальное количество актеров;
Задача 45 (№ 68) Дом - Школа – Дом (Сложность: 21%)
Задача 49 (№ 692) Бинарные числа (Сложность: 8%)
Задача № 52 (№ 233). Автобусная экскурсия (Сложность: 14%)
Выходные данные. В выходной файл OUTPUT.TXT выведите ответ на задачу.
Задача 55 (№ 264) Оттепель(Сложность: 17%)
Задача 56 (№ 949) Фибоначчиева последовательность. (Сл.17%)
Задача 57 (№ 778) Офис (Сложность: 18%)
Задача 60 (№ 947) Карточки – 3 (Сложность: 22%)
Задача 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%)
Строки
Задача 74 (№ 324) Четырехзначный палиндром ( Сл.: 10%)
Требуется написать программу, определяющую, является ли четырехзначное натуральное число N палиндромом, т.е. числом, которое одинаково читается слева направо и справа налево.
Входные данные
№ | INPUT.TXT | OUTPUT.TXT |
1 | 6116 | YES |
2 | 1231 | NO |
Выходные данные
В выходной файл 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 |
Выходные данные
В выходной файл 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
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; }
Задача 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 |
Выходные данные
Выходной файл 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 |
Выходные данные
В единственную строку выходного файла 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 |
Никто так и не смог его разгадать. Позже оказалось, что число в правом столбце равно сумме "кругляшей", которые есть в цифрах числа, расположенного слева. Ваша задача написать программу, которая определяет, сколько кругляшей в числе.
Входные данные
Во входном файле 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 |
Вторая строка содержит 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 |
По состоянию игрового поля в конце игры требуется определить результат игры для первого игрока: выиграл, проиграл или сыграл вничью.
Входные данные. Входной файл 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 (0 ≤ n ≤ 25).
Выходные данные
В выходной файл выведите ответ на задачу.
#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 |