Привет! А вот и мы! Сегодня у нас юбилейная статья под номером 30!
Мы вновь подготовили Вам подборку интересных вопросов и задачек с собеседований в ведущие IT-компании! Ответы на задачки из прошлого выпуска уже опубликованы.
Выпуски будут появляться каждую неделю — следите за обновлениями! Рубрика выходит при поддержке рекрутингового агентства Spice IT.
На этой неделе мы собрали задачи с собеседований в американскую компанию Visa.
1. 100 Prisoners with Red/Black Hats
2. Ratio of Boys and Girls in a Country where people want only boys
1. The Lazy Caterer's Problem
2. Peak element
3. Maximum Intervals Overlap
Ответы на задачи будут даны в течение следующей недели — успейте решить. Удачи!
Мы вновь подготовили Вам подборку интересных вопросов и задачек с собеседований в ведущие IT-компании! Ответы на задачки из прошлого выпуска уже опубликованы.
Выпуски будут появляться каждую неделю — следите за обновлениями! Рубрика выходит при поддержке рекрутингового агентства Spice IT.
На этой неделе мы собрали задачи с собеседований в американскую компанию Visa.
Вопросы
1. 100 Prisoners with Red/Black Hats
100 prisoners in jail are standing in a queue facing in one direction. Each prisoner is wearing a hat of color either black or red. A prisoner can see hats of all prisoners in front of him in the queue, but cannot see his hat and hats of prisoners standing behind him.
The jailer is going to ask color of each prisoner’s hat starting from the last prisoner in queue. If a prisoner tells the correct color, then is saved, otherwise executed. How many prisoners can be saved at most if they are allowed to discuss a strategy before the jailer starts asking colors of their hats.
Перевод
100 заключенных в тюрьме стоят в очереди лицом в одну сторону. Каждый заключенный носит шапку черного или красного цвета. Заключенный может видеть шапки всех заключенных перед ним в очереди, но не может видеть свою шапку и шапки заключенных, стоящие позади него.
Тюремщик будет спрашивать цвет шапки каждого заключенного, начиная с последнего заключенного в очереди. Если заключенный говорит правильный цвет, то его помилуют, в противном случае, казнят. Сколько заключенных можно спасти, если им разрешат обсудить стратегию до того, как тюремщик начнет спрашивать цвета своих шляп.
Предложите эту стратегию.
Тюремщик будет спрашивать цвет шапки каждого заключенного, начиная с последнего заключенного в очереди. Если заключенный говорит правильный цвет, то его помилуют, в противном случае, казнят. Сколько заключенных можно спасти, если им разрешат обсудить стратегию до того, как тюремщик начнет спрашивать цвета своих шляп.
Предложите эту стратегию.
2. Ratio of Boys and Girls in a Country where people want only boys
In a country, all families want a boy. They keep having babies till a boy is born. What is the expected ratio of boys and girls in the country?
Перевод
В стране все семьи хотят мальчика. Они продолжают рожать детей до рождения мальчика. Каково ожидаемое соотношение мальчиков и девочек в стране?
Задачи
1. The Lazy Caterer's Problem
Given an integer N, denoting the number of cuts that can be made on a pancake, find the maximum number of pieces that can be formed by making N cuts.
Input:
The first line of input contains a single integer T denoting the number of test cases. Then T test cases follow. Each test case consist of one line. The first line of each test case consists of an integer N.
Output:
Corresponding to each test case, in a new line, print the maximum number of pieces that can be formed by making N cuts.
Constraints:
1 ? T ? 100
1 ? N ? 106
Example:
Input
2
5
3
Output
16
7
Перевод
Дано целое число N, обозначающее количество разрезов, которые можно сделать на блине. Найти максимальное количество кусков, которые можно получить, сделав N разрезов.
Входные данные:
Первая строка ввода содержит одно целое число T, обозначающее количество тестов. Затем следуют тесты T. Каждый тест состоит из одной строки. Первая строка каждого теста состоит из целого числа N.
Выход:
В соответствии с каждым тестовым примером в новой строке выведите максимальное количество деталей, которое можно сформировать, выполняя N разрезов.
Ограничения:
Пример:
Вход
Выход
Входные данные:
Первая строка ввода содержит одно целое число T, обозначающее количество тестов. Затем следуют тесты T. Каждый тест состоит из одной строки. Первая строка каждого теста состоит из целого числа N.
Выход:
В соответствии с каждым тестовым примером в новой строке выведите максимальное количество деталей, которое можно сформировать, выполняя N разрезов.
Ограничения:
1 ? T ? 100
1 ? N ? 106
Пример:
Вход
2
5
3
Выход
16
7
2. Peak element
Given an array A of N integers. The task is to find a peak element in it.
An array element is peak if it is not smaller than its neighbours. For corner elements, we need to consider only one neighbour.
Note: There may be multiple peak element possible, in that case you may return any valid index.
Input Format:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains an integer N. Then in the next line are N space separated values of the array.
Output Format:
For each test case output will be 1 if the index returned by the function is an index with peak element.
User Task:
You don't have to take any input. Just complete the provided function peakElement() and return the valid index.
Constraints:
1 <= T <= 100
1 <= N <= 100
1 <= A[] <= 1000
Example:
Input:
2
3
1 2 3
2
3 4
Output:
3
4
Explanation:
Testcase 1: In the given array, 3 is the peak element.
Testcase 2: 4 is the peak element.
Перевод
Дан массив A из N целых чисел. Задача состоит в том, чтобы найти в нем пиковый элемент.
Элемент массива является пиковым, если он не меньше своих соседей. Для угловых элементов нам нужно рассмотреть только одного соседа.
Примечание. Может быть несколько пиковых элементов, в этом случае вы можете вернуть любой действительный индекс.
Формат ввода:
Первая строка ввода содержит целое число T, обозначающее количество тестов. Затем следуют тесты T. Каждый тестовый пример содержит целое число N. Затем в следующей строке находятся N разделенных пробелами значений массива.
Ограничения:
Пример:
Входные данные:
Выход:
Объяснение:
Тестовый пример 1: в данном массиве 3 является пиковым элементом.
Тестовый пример 2: 4 является пиковым элементом.
Элемент массива является пиковым, если он не меньше своих соседей. Для угловых элементов нам нужно рассмотреть только одного соседа.
Примечание. Может быть несколько пиковых элементов, в этом случае вы можете вернуть любой действительный индекс.
Формат ввода:
Первая строка ввода содержит целое число T, обозначающее количество тестов. Затем следуют тесты T. Каждый тестовый пример содержит целое число N. Затем в следующей строке находятся N разделенных пробелами значений массива.
Ограничения:
1 <= T <= 100
1 <= N <= 100
1 <= A [] <= 1000
Пример:
Входные данные:
2
3
1 2 3
2
3 4
Выход:
3
4
Объяснение:
Тестовый пример 1: в данном массиве 3 является пиковым элементом.
Тестовый пример 2: 4 является пиковым элементом.
3. Maximum Intervals Overlap
Consider a big party where a log register for guest’s entry and exit times is maintained. Find the time at which there are maximum guests in the party. Note that entries in register are not in any order.
Input:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains an integer n denoting the size of the entry and exit array. Then the next two line contains the entry and exit array respectively.
Output:
Print the maximum no of guests and the time at which there are maximum guests in the party.
Constraints:
1<=T<=10^5
1<=N<=10^5
1<=entry[i],exit[i]<=10^5
Example:
Input:
2
5
1 2 10 5 5
4 5 12 9 12
7
13 28 29 14 40 17 3
107 95 111 105 70 127 74
Output:
3 5
7 40
Перевод
Рассмотрим большую вечеринку, где ведется журнал регистрации времени входа и выхода гостя. Найдите время, когда в гостях будет максимум гостей. Обратите внимание, что записи в реестре не в любом порядке.
Входные данные:
Первая строка ввода содержит целое число T, обозначающее количество тестов. Затем следуют тесты T. Каждый тестовый пример содержит целое число n, обозначающее размер массива входа и выхода. Затем следующие две строки содержат массив входов и выходов соответственно.
Выход:
Выведите максимальное количество гостей и время, в которое максимальное количество гостей на вечеринке.
Ограничения:
Пример:
Входные данные:
Выход:
Входные данные:
Первая строка ввода содержит целое число T, обозначающее количество тестов. Затем следуют тесты T. Каждый тестовый пример содержит целое число n, обозначающее размер массива входа и выхода. Затем следующие две строки содержат массив входов и выходов соответственно.
Выход:
Выведите максимальное количество гостей и время, в которое максимальное количество гостей на вечеринке.
Ограничения:
1 <= Т <= 10 ^ 5
1 <= N <= 10 ^ 5
1 <= запись [I], выход [I] <= 10 ^ 5
Пример:
Входные данные:
2
5
1 2 10 5 5
4 5 12 9 12
7
13 28 29 14 40 17 3
107 95 111 105 70 127 74
Выход:
3 5
7 40
Ответы на задачи будут даны в течение следующей недели — успейте решить. Удачи!
ptyrss
Как-то большего ожидал. Вопросы имхо совершенно начального уровня.
Ну по вопросам всё просто.
99 надёжно. последний передаёт бит чётности.
AlexTest
Dubovik_a
В семьях будут встречаться следующие варианты последовательностей детей (0 — девочка, 1 — мальчик):
1
01
001
0001
00001
Вероятности таких последовательностей:
1 — 1/2
01 — 1/4
001 — 1/8
0001 — 1/16
00001 — 1/32
Процентное соотношение мальчиков вычисляется как предел суммы последовательности от 1 до бесконечности от 1 / (n * 2^n).
Численно получается около 69.31471805599% мальчиков.
Аналитически — натуральный логарифм от двух.
Задача решена в предположении, что вероятности рождения мальчика и девочки одинаковые (что в нашем неидеальном мире не совсем точно).
ptyrss
Самый простой способ. Берём большое количество пар у которых нет детей. Ровно у половины будет мальчик. У второй половины девочка. Пока 50/50. Начинаем 2 раунд. У оставшихся у половины мальчик, у второй половины девочка. Опять 50/50 и так далее.
А вы кстати ряд неправильно написали. Надо было (n-1)/2^n что в точности равно единице. Ну и мальчиков единица по определению.
И сразу AlexTest. Вероятности так не работают) У каждого броска монеты 50/50. Какую стратегию ни строй, ничего изменить нельзя. Любое множество бросков будет иметь именно такую вероятность среднюю.
P.S. вопрос оказался сложнее, чем я думал.
Dubovik_a
По строчкам:
1. В семье один ребёнок, один из них мальчик.
2. В семье два ребёнка, один из них мальчик.
3. В семье три ребёнка, один из них мальчик.
4. В семье четыре ребёнка, один из них мальчик.
…
Суммируйте.
ptyrss
Ну давайте. Посчитаем количество мальчиков. Кеп говорит что будет 1 в сумме. Считаем количество девочек.
0/2 + 1/4 + 2/8 + 3/16 + 4/32+… ну вы поняли. Итого 1. Вроде всё правильно.
Dubovik_a
Да, кажется, в моей формуле не хватает нормировки на кол-во детей.
А простое объяснение на словах звучит примерно так:
«При рождении n-го ребёнка родится поровну мальчиков и девочек. При этом все мальчики окажутся в семьях, в которых всего суммарно n детей, а все девочки окажутся в семьях с n+1, n+2 и т.д. детей».
Итого: поровну.
AlexTest
Да, вы правы. Когда у меня начала крыша ехать от рассуждений — написал простую програмку, чтобы численно проверить результат:
На 10000 семей каждый раз количество мальчиков и девочек получается примерно одинаково — по 10000 соответственно. При этом иногда получаются семьи, где есть и по 16 девочек, вот например в таком результате:
Array
(
[0] => 5038
[1] => 2393
[2] => 1291
[3] => 640
[4] => 323
[5] => 169
[6] => 73
[7] => 39
[8] => 23
[9] => 5
[10] => 5
[16] => 1
)
d=10038
m=10000
AlexTest
del