Считаем счастливые билеты на C++

10 комментариев

Сейчас мы рассмотрим задачу, условие которой следующее:

Трамвайные билеты имеют номера из шести цифр от 000000 до 999999, билет называется счастливым, если сумма 1-й, 3-й и 5-й цифр равна сумме 2-й, 4-й и 6-й цифр. Необходимо вычислить количество счастливых билетов.

Алгоритм весьма прост — в цикле перебираем все числа от 0 до 999999, если условие равенства выполняется, то увеличиваем счетчик на единицу. В итоге у нас должно получиться ровно 55252 билета.

Для решение данной задачи нам понадобится массив из шести элементов и цикл. При каждой итерации цикла (их у нас будет 999999) мы будем загонять в массив шестизначное число, по одной цифре в каждую ячейку памяти. Затем мы проверяем, удовлетворяет ли данный массив поставленному условию.

Если сумма 1-й, 3-й и 5-й цифр равна сумме 2-й, 4-й и 6-й цифр, тогда увеличиваем значение счетчика sum на единицу.

После завершения всего цикла функция builets() возвращает искомое значение функции main(), которая и выводит результат на экран.

#include <iostream>
using namespace std;

int tickets()
{
    int sum = 0;
    int i, j, k;
    char builet[6];
    for (i = 0; i <= 999999; i++) {
        for (k = i, j = 0; j < 6; j++, k /= 10) {
            builet[j] = k % 10;
        }
        if (builet[0]+builet[2]+builet[4] == builet[1]+builet[3]+builet[5]) {
            ++sum;
        }
    }
    return sum;
}

int main()
{
    setlocale(0, "");
    int k = tickets();
    cout << "Количество счастливых билетов: " << k << endl;
    return 0;
}

Функция builets() проверяет равенство суммы цифр, заданное условием, и увеличивает переменную sum на единицу, если равенство выполняется.

После полного прохождения цикла функция возвращает число, которое и является решением задачи.

Комментарии к статье: 10

Подождите, загружаются комментарии...

Возможность комментировать эту статью отключена автором. Возможно, во всем виновата её провокационная тематика или большое обилие флейма от предыдущих комментаторов.

Если у вас есть вопросы по содержанию статьи, рекомендуем вам обратиться за помощью на наш форум.