Требуется написать программу, определяющую, является ли четырехзначное натуральное число 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 нечетных чисел равняется N
2:
№
| 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, то возможно нужно добавить нули перед часами и минутами
|
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц.
№
| 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.
|
Однажды в просторах рунета появился следующий ребус:
№
| 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 <= 10
100).
В выходной файл выведите одно число – количество кругляшей в числе 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; }
№
| 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
|