Написать пост

Батарейки, ряды и конференции — подборка задач для программистов

Аватар Андрей Приб

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

Обложка поста Батарейки, ряды и конференции — подборка задач для программистов

Батарейки и фонарик

У вас есть 8 батареек, но работают только 4 из них. Вам необходимо вставить 2 рабочие батарейки в фонарик. Какое минимальное количество пар батареек придётся проверить, чтобы фонарик точно включился?

Оригинал задачи на английском языке

There are 8 batteries, but only 4 of them work. You have to use them for a flashlight which needs only 2 working batteries. To guarantee that the flashlight is turned on, what is the minimum number of battery pairs you need to test?

Решение задачи на русском языке

Для решения проблемы обозначим батарейки A, B, C, D, E, F, G и H. По условиям задачи нельзя проверить каждую батарейку по отдельности, необходимо ставить их в фонарик попарно. Если фонарик не включается, значит, одна или обе батарейки не работают. Попробуем цикличный подход.

Протестируем батарейки в последовательности АB, BC и AC. Если рассматривать худший случай — ни одна пара не заработала, но одна батарейка из A, B, C работает — среди батареек D, E, F, G, H должно остаться три рабочих. Следующей парой следует проверить DE. Если фонарик не зажёгся, значит, среди батареек F, G, H есть 2 рабочих. Перебрав комбинации FG, GH и FH можно гарантированно найти рабочую пару. Таким образом, всего получается 7 пар.

Решение задачи на английском языке

To solve this problem, the first step involves naming the batteries, for instance, A, B, C, D, E, F, G, and H. In this problem, you can’t compare 2 items directly. If a combination of two batteries fail to turn the light on, it means either one or both the batteries aren’t working. The candidate has to approach the puzzle in a circular manner.

The batteries are put test consecutively in the order AB, BC, and AC. At most, one of the three batteries between A, B, And C is working, only if none of the pairs work. This also implies that at least three batteries between D, E, F, G, and H must be functional. DE combination is tried next. If they don’t work, at least 2 out of F, G, and H must work. Similarly, try the combinations FG, GH, and FH to positively asset which batteries really work. Total pairs – 7.

Найти сумму ряда 1-2+3-4+5-6+7

Дано число N. Необходимо написать программу для поиска суммы последовательности из n чисел по следующему алгоритму:
1 − 2 + 3 − 4 + 5 − 6 + …

Пример:

Вход: N = 8
Выход: −4

Вход: N = 10001
Выход: 5001

Оригинал задачи на английском языке

Given a number N. The task is to write a code for finding the sum of the below series up to nth term:
1 – 2 + 3 – 4 + 5 – 6 +….

Example:

Input : N = 8
Output : -4

Input : N = 10001
Output : 5001

Решение задачи на русском языке

Если внимательно изучить входной алгоритм, можно заметить, что суммы последовательностей представляют собой чередующиеся положительные и отрицательные числа от 1 до N:

N = 1, 2, 3, 4, 5, 6, 7, …
Sum = 1, −1, 2, −2, 3, −3, 4, …

Следовательно, можно сделать вывод:

  • если n нёчетное => sum = (n + 1) / 2;
  • если n чётное => sum = (−1) * n / 2.
Решение задачи на английском языке

If we observe carefully, we can see that the sum of the above series follows a pattern of alternating positive and negative integers starting from 1 to N as shown below:

N = 1, 2, 3, 4, 5, 6, 7 ……
Sum = 1, -1, 2, -2, 3, -3, 4 ……

Hence, from the above pattern, we can coonclude that:

  • when n is odd => sum = (n+1)/2
  • when n is even => sum = (-1)*n/2
Код
			using System;
  
class GFG
{
    static int calculateSum(int n)
    {
        // Если нечётное
        if (n % 2 == 1)
            return (n + 1) / 2;
 
        // Если чётное
        return -n / 2;
    }
  
    // Основной поток
    public static void Main()
    {
  
        // Количество элементов в последовательности
        int n = 8;
        Console.WriteLine(calculateSum(n));
    }
}
		

Сколько людей на конференции?

Каждый гость на конференции обменялся рукопожатием с другим. Всего было 66 рукопожатий. Сколько гостей прибыло на научную конференцию?

Оригинал задачи на английском языке

At the conference, every guest shook hands with everybody else. There were 66 handshakes. How many people were at the scientific conference?

Решение задачи на русском языке

Предположим, всего пришли n гостей. Первый гость пожал руку n − 1 гостям. Второй гость обменялся рукопожатием с n − 2 гостями (первого гостя мы уже посчитали). Третий гость пожал руку n − 3 раз (за исключением первого и второго гостей). Следовательно, можно составить уравнение.
Всего рукопожатий:

(n − 1) + (n − 2) + (n − 3) + … + 0;
= (n − 1) * (n − 1 + 1) / 2 = (n − 1) * n / 2 = 66
= n^2 − n = 132
= (n − 12)(n + 11) = 0

n = 12 или n = −11

−11 по понятным причинам ответом не является, значит, всего 12 гостей.

Решение задачи на английском языке

Lets say there are n persons. First person shakes hand with everyone else: n-1 times(n-1 persons). Second person shakes hand with everyone else(not with 1st as its already done): n-2 times. 3rd person shakes hands with remaining persons: n-3

So total handshakes will be = (n-1) + (n-2) + (n-3) +…… 0;
= (n-1)*(n-1+1)/2 = (n-1)*n/2 = 66
= n^2 -n = 132
=(n-12)(n+11) = 0;
= n = 12 OR n =-11

-11 is ruled out so the answer is 12 persons

Следите за новыми постами
Следите за новыми постами по любимым темам
8К открытий8К показов