e-olymp 109. Нумерация

h1>Задача

Для нумерации [latex]m[/latex] страниц книги использовали [latex]n[/latex] цифр. По заданному [latex]n[/latex] вывести [latex]m[/latex] или [latex]0[/latex], если решения не существует. Нумерация начинается с первой страницы.

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

Единственное число [latex]n[/latex]. В книге не более [latex]1001[/latex] страницы.

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

Вывести количество страниц в книге.

Тесты

Входные данные Выходные данные
27 18
15 12
9 9
49 29
50 0

Решение

Для решения этой задачи я описал [latex]3[/latex] переменные: [latex]n[/latex], [latex]m[/latex] и [latex]minus[/latex], где [latex]n[/latex]- количество цифр, использованных для нумерации страниц, [latex]m[/latex] — количество страниц и [latex]minus[/latex] — «счетчик», для определения количества цифр в числе [latex]a[/latex]. Использовал [latex]2[/latex] вложенных цикла, где счетчик [latex]a[/latex] — определяет разрядность числа страницы [latex]b[/latex]. Внутри вложенного цикла перед вычитанием [latex]minus[/latex] из [latex]n[/latex] поставил проверку на выполнения условий: если [latex]n==0[/latex], значит мы закончили считать страницы и если [latex]n-minus<0[/latex], значит на следующей итерации мы запишем [latex]n[/latex] в отрицательное значение, значит во входных данных была ошибка.

Ссылки

Ideone
e-olymp

e-olymp 128. Счастливые билеты

Задача. Подсчитайте количество счастливых билетов, у которых сумма первых трёх цифр равна N(N≤27). Счастливым билетом называется билет с шестизначным номером, у которого сумма первых трёх цифр равна сумме трёх последних.

Тесты

Число N 3 27 26 1 10
Количество билетов 100 1 9 9 3969

Код программы

Код можно увидеть тут.

Алгоритм

Любой шестизначный номер мы можем представить как 2 трехзначных номера.

Рассмотрим все варианты трехзначных номеров. Две первые цифры такого номера могут быть любыми. Переберем все их комбинации с помощью двух вложенных циклов. Для третьей цифры введем специальное условие. Она должна быть результатом вычитания двух первых цифр из [latex]N[/latex], а также быть именно цифрой, то есть меньшей 10.

Когда в цикле встречается подходящая комбинация, мы увеличиваем счетчик [latex]c[/latex] на 1. Поскольку на самом деле номер шестизначный, то каждой удачной комбинации в первой его половине будет соответствовать [latex]c[/latex] комбинаций во второй. Следовательно, искомое число счастливых билетов будет равно [latex]c^2[/latex].

Ссылка на авторское решение задачи.