Язык программирования

3 014 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Слон#20378

Требуется определить, бьет ли слон, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке.

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

Вводятся четыре числа: координаты слона и координаты другой фигуры. Координаты - целые числа в интервале от 1 до 8.

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

Требуется вывести слово YES, если слон способен побить фигуру за 1 ход, в противном случае вывести слово NO

Примеры
входные данные
1
1
5
5
выходные данные
YES

входные данные
3
2
2
2
выходные данные
NO

20247#20247
Даны координаты двух полей шахматной доски (координаты клетки - это 2 числа от 1 до 8: номер столбца и номер строки)
 
Одно ли цвета эти клетки на шахматной доске? Вывести в выходной файл сообщение YES, если они одного цвета, и NO иначе
 
Пример ввода:
1 1 2 2
 
Пример вывода:
YES
 
 
Пример ввода:
1 1 1 4
 
Пример вывода:
NO
 
20243#20243
Дано трехзначное число. Написать программу, которая определяет сколько раз входит в него цифра 4.

(никакие поясняющие записи в программе делать не нужно! библиотеку conio.h и команду getch() перед отправкой файла необходимо удалить!)

Пример входных и выходных данных
№ теста Входные данные Выходные данные
1 473 1
 

✓ 32✗ 122700средняяВойти и решать
Bit++#19886
 
Классический язык программирования в Битландии — Bit++. Этот язык очень необычный и сложный!
 
Особенность языка Bit++ состоит в том, что в нем ровно одна переменная, которая называется x. Также в этом языке есть две операции:
 
Операция ++ увеличивает значение, хранящееся в переменной x на 1.
Операция -- уменьшает значение, хранящееся в переменной x на 1.
Предложение в языке Bit++ — это последовательность, состоящая из ровно одной операции и ровно одной переменной x. Предложение записывается без пробелов, то есть может содержать только символы: «+», «-», «X». Выполнить предложение, значит выполнить операцию, которая содержится в предложении.
 
Программа на языке Bit++ — это последовательность предложений, каждое из которых требуется выполнить. Выполнить программу, значит выполнить все ее предложения.
 
Вам задана программа на языке Bit++. Перед выполнением программы в переменной x хранится значение 0. Выполните программу и выведите значение, которое будет храниться в переменной x после выполнения программы.
 
Входные данные
В первой строке записано единственное целое число n (1 ≤ n ≤ 150) — количество предложений в программе. В каждой из следующих n строк записано по предложению. Каждое предложение состоит из ровно одной операции (++ или --) и ровно одной переменной x (обозначается буквой «X»). Таким образом, не бывает пустых предложений. Операция и переменная могут быть записаны в любом порядке.
 
Выходные данные
Выведите единственное целое число — значение, которое будет храниться в переменной x после выполнения программы.
Однажды царь решил вознаградить одного из своих мудрецов за хорошую работу. Он привел его в прямоугольную комнату размром NxM, в каждой клетке которой лежало несколько килограммов золота. Царь разрешил мудрецу сделать обойти несколько клеток (переходя с клетки, где сейчас находится мудрец, в одну из четырех с ней соседних), и собрать все золото, которое попадется на его пути.
Мудрецу разрешено более одного раза проходить по одной и той же клетке. Золото с нее он берет при этом  только один раз - когда проходит по клетке в первый раз.

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

Входные данные
Входные данные содержат план комнаты и маршрут мудреца. Сначала записано количество строк N, затем - количество столбцов M (1<=N<=20,1<=M<=20).
Затем записано N строк по M чисел в каждой - количество килограммов золота, которое лежит в данной клетке (число от 0 до 50).
Далее записано число X - сколько клеток обошел мудрец. Далее записаны координаты этих клеток (координаты клетки - это два числа: первое определяет номер строки, второе - номер столбца, верхняя левая клетка на плане имеет координаты (1,1), правая нижняя - (N,M)). 
Число пройденных мудрецом клеток не превышает 10000.

Выходные данные
В выходной файл выведите количество килограммов золота, которое собрал мудрец.
 
Примеры
Входные данные Выходные данные
1
3 4
1 2 3 4
5 6 7 8
9 10 11 12
9
1 1
2 1
2 2
2 3
1 3
1 2
1 1
1 2
2 2
24

 
Однажды царь решил вознаградить одного из своих мудрецов за хорошую работу. Он привел его в прямоугольную комнату размром NxM, в каждой клетке которой лежало несколько килограммов золота. Царь разрешил мудрецу сделать обойти несколько клеток (переходя с клетки, где сейчас находится мудрец, в одну из четырех с ней соседних), и собрать все золото, которое попадется на его пути.
 
Вам дан маршрут мудреца. Требуется определить, сколько килограммов золота он собрал.
 
Входные данные
Входные данные содержат план комнаты и маршрут мудреца. Сначала записано количество строк N, затем - количество столбцов M (1<=N<=20,1<=M<=20).
Затем записано N строк по M чисел в каждой - количество килограммов золота, которое лежит в данной клетке (число от 0 до 50).
Далее записано число X - сколько клеток обошел мудрец. Далее записаны координаты этих клеток (координаты клетки - это два числа: первое определяет номер строки, второе - номер столбца, верхняя левая клетка на плане имеет координаты (1,1), правая нижняя - (N,M)).
Гарантируется, что мудрец не проходил по одной и той же клетке дважды.
 
Выходные данные
В выходной файл выведите количество килограммов золота, которое собрал мудрец.
 
Примеры
Входные данные Выходные данные
1
3 4
1 2 3 4
5 6 7 8
9 10 11 12
5
1 1
2 1
2 2
2 3
1 3
22
 
В квадратной таблице NxN подсчитать суммы чисел, стоящих на диагоналях.
 
Входные данные
В первой строке содержится число N (1<=N<=100), а затем матрица NxN.  Элементы матрицы - числа, не превосходящие по модулю 32767.
 
Выходные данные
Вывелите сначала сумму чисел на главной,  а затем, через один пробел, - на побочной диагонали.
 
Примеры
Входные данные Выходные данные
1
3
1 2 3
4 5 6
10 9 8
14 18
 
ГАИ#18782
ГАИ
 
Вдоль шоссе в точках X1,X2,...,XN расположены посты ГАИ. 
В точке X произошло мелкое ДТП (дорожно-транспортное происшествие).
Требуется определить, какой из постов ГАИ расположен ближе всего
к этой точке, чтобы с него послать к месту происшествия наряд милиции.
 
Входные данные
Во входном файле записано сначала число N - количество пунктов ГАИ. (1<=N<=100)
Далее следуют координаты расположения постов ГАИ на прямом шоссе
(целые числа от -10000 до 10000). Далее идет координата точки,
в которой произошло ДТМ (целое число от -10000 до 10000).
 
Выходные данные
В выходной файл требуется вывести одно число - номер поста ГАИ,
с которого нужно послать наряд к месту ДТП. Если несколько постов
ГАИ находятся на одинаковом расстоянии от точки ДТП, выведите любой из них.
 
Пример входного файла
5
10 2 8 -7 3
7
 
Пример выходного файла
3
Количество операций
 
Дана программа сортировки (p141.pas). Требуется узнать, сколько раз
при сортировке конкретного массива с помощью этой программы
выполняется операция сравнения двух элементов массива (строка 25 программы).
 
Входные данные
Задано сначала число N (1≤N≤100), а затем N целых чисел, по модулю не превышающих 1000.
 
Выходные данные
Ваша программа должна печатать одно число - сколько
раз в процессе сортировки этого массива программой p141.pas выполнится
команда сравнения двух элементов массива.
 
Пример входного файла
5
3 1 2 4 2
 
Пример выходного файла
10

Текст программы p141.pas
const nmax=100;

var a:array[1..nmax] of integer;
    n:integer;
    i,j,g:integer;

    f1,f2:text;

begin
assign(f1,'input.txt');
reset(f1);
assign(f2,'output.txt');
rewrite(f2);
                                  {Чтение входных данных}
read(f1,n);
for i:=1 to n do read(f1,a[i]);
                                  {Сортировка массива}

for i:=1 to n do begin            {Подбираем число на i-ое место}

  g:=i;                           {Считаем, что самое маленькое число,
                                   которое нам встретилось, стоит на месте i}

  for j:=i+1 to n do              {Перебираем все числа с i+1 до конца массива}
    if a[j]<a[g] then g:=j;       {Если нашли число, которое меньше,
                                   чем то, что уже найдено, запоминаем его}

                                  {Меняем местами числа, стоящие на i-ом и
                                   на g-ом местах }
                                  {Если a[i]=x, a[g]=y, то после выполнения
                                   команды: }
  if i<>g then begin
    a[i]:=a[i]+a[g];                {a[i]=x+y, a[g]=y}
    a[g]:=a[i]-a[g];                {a[i]=x+y, a[g]=(x+y)-y=x}
    a[i]:=a[i]-a[g];                {a[i]=(x+y)-x=y}
                                  {То есть после этого a[i]=y, a[g]=x
                                   обмен значений произошел}
    end;

  end;

                                  {Выводим результат}
for i:=1 to n do
  write(f2,a[i],' ');
close(f1);
close(f2);
end.

Троллейбусы одного маршрута проходят через остановку каждые k (1<=k<=500) минут. Известны времена прихода пассажиров на эту остановку. Если пассажир приходит на остановку в момент прихода троллейбуса, то он успевает уехать на нем.
 
Напишите программу, которая бы определяла, во сколько должен пройти первый троллейбус (это время от 0 до k-1), чтобы:
1) Суммарное время ожидания троллейбуса для всех пассажиров было минимально.
2) Максимальное из времен ожидания троллейбуса было минимально.
 
Входные данные
В строке записано сначала число k, затем - число N (0<=N<=100000). Затем идет N чисел, задающих времена прихода пассажиров 
на остановку. Каждое из этих чисел - целое от 0 до 100000.
 
Выходные данные
Запишите два числа, являющиеся ответами на первый и второй вопросы задачи соответственно. 
Если решений несколько, выведите любое из них.

Примеры
Входные данные Выходные данные
1
100 5
0 210 99 551 99
10
51
 
 
В начальный момент в i-ом элементе массива записано число i (всего N элементов). 
Каждую секунду числа сдвигаются в следующую ячейку (из i-ой в i+1-ую), а из N-ой - в первую. 
Напечатать состояние массива через T секунд.


Входные данные
Программа получает на вход строку, в которой записаны два числа - N и T (1<=N<=100) и T (0<=T<=30000).

Выходные данные
Выведите N чисел - состояние массива через T секунд.
 
 
Примеры
Входные данные Выходные данные
1 5 3
3 4 5 1 2
 
 
Дан массив. Требуется вставить в него на место номер B элемент, равный C,
сдвинув все последующие элементы (включая элемент, стоящий на B-ом месте) 
вправо.
 
Входные данные
Во входном файле записано сначала число N - количество элементов массива
(2<=N<=100), затем N чисел из диапазона Integer - элементы массива,
затем число B (1<=B<=N) и число C (из диапазона Integer).
 
Выходные данные
В выходной файл выведите N+1 число - элементы массива с вставленным элементом.
 
Примечание
Вы должны вставить элемент непосредственно в массив, а не сделать
вид при выводе данных, что у вас появился такой элемент. Также вы не 
должны для этого заводить в программе дополнительный массив.
 
 
Пример входного файла
5
1 3 5 6 7
2 10
 
Пример выходного файла
1 10 3 5 6 7
 
Даны N отрезков прямой. Найти длину общей части всех этих отрезков.
 
Входные данные Вводится сначала число N (1<=N<=100). Далее вводится N пар чисел, задающих координаты левого и правого концов каждого отрезка. Все координаты - числа из диапазона от 0 до 30000. Левый конец отрезка всегда имеет координату строго меньшую, чем правый.
 
Выходные данные Выведите длину общей части этих отрезов. Если у всех этих отрезков общей части нет, выведите 0.
 
Примеры
Входные данные Выходные данные Пояснение
1
3
1 10
3 15
2 6
3 общая часть этих отрезков - отрезок от 3 до 6.
2
3
1 10
2 20
11 20
0 у этих отрезков нет общей части
 
 
Вводится число N, а затем N чисел - элементов массива (\(1<=N<=100\)), элементы массива - натуральные числа, не превышающие 100. 
Необходимо определить номера мест в массиве, на которых стоят  одинаковые элементы, или два числа 0 (то есть 0 0), если все элементы различны. Если есть несколько пар чисел, являющихся ответом, вывести любую из них.


Входные данные
В первой строке задается натуральное число N - количество чисел. Во второй строке - N натуральных чисел (\(2<=N<=100\), все числа не превышают 100).

Выходные данные
Выведите ответ на задачу.
 
 
Примеры
Входные данные Выходные данные
1
1 2 1 3 4     
1 3
2
4
1 2 3 4
0 0
Среди заданных N натуральных чисел определить сколько среди них пар одинаковых чисел, стоящих рядом.

Входные данные
В певрой строке задается натуральное число N - количество чисел. Во второй строке - N натуральных чисел (\(2<=N<=100\), все числа не превышают 100).

Выходные данные
Выведите одно число - количество пар одинаковых чисел, стоящих рядом.
 
 
Примеры
Входные данные Выходные данные
1
5
1 3 2 2 3
1
2
4
1 1 1 1
3
Даны два числа. Найти их наибольший общий делитель.
 
Входные данные: Вводятся два натуральных числа, не превышающих 10^9, (запись 10^9 обозначает "10 в 9-й степени", то есть 1000000000).
Выходные данные: Выведите НОД введенных чисел

Примеры
Входные данные Выходные данные
1 42 12 6
Вводится последовательность чисел. Посчитать в ней количество четных чисел, стоящих на четных местах.
 
Входные данные
Вводится сначала число N, а затем N чисел - члены последовательности.
 
Выходные данные
Выведите количество четных чисел, стоящих на четных местах в последовательности.
 
 
Примеры
Входные данные Выходные данные
1
5
1 2 4 5 6
1
 
Пояснение: единственное четное число, стоящее на четном месте в последовательности - это число 2. Числа 4 и 6 не подходят, так как стоят, соответственно, на 3 и 5-м местах.
По заданному числу определите число из диапазона от 1 до N с максимальной суммой делителей (включая непростые делители, 1 и само число). Если таких чисел несколько, выведите максимальное из них.


Входные данные
На вход подается натуральное число.

Выходные данные
Выведите на экран ответ на задачу.
 
 
Примеры
Входные данные Выходные данные
1 5 4
Напишите программу, которая определяет является ли вводимое число степенью двойки.

Входные данные
На вход подается одно целое число.

Выходные данные
Выведите на экран YES, если оно является степенью двойки, NO - иначе.
 
 
Примеры
Входные данные Выходные данные
1 16 YES
2 43 NO
✓ 577✗ 1 331400лёгкаяВойти и решать
Дана последовательность чисел. Найти в ней наименьшее число.
 
Входные данные
Задано сначала число N (количество чисел в последовательности), а затем N чисел в одной строке, разделенных одним пробелом.
 
Выходные данные
Выведите наименьшее число.
 
Примеры
Входные данные Выходные данные
1
7
4 2 5 -1 4 6 2
-1
✓ 809✗ 1 683400лёгкаяВойти и решать
Поделиться
Класснуть