Задача взята с сайта e-olymp.com.
Задача
Подсчитайте количество счастливых билетов, у которых сума первых трёх цифр равна [latex]N[/latex].
Счастливым билетом называется билет с шестизначным номером, у которого сумма первых трёх цифр равна сумме трёх последних.
Входные данные
В единственной строке задано натуральное число [latex] N (N ≤ 27). [/latex]
Выходные данные
Единственное число — количество счастливых билетов.
Тесты
№ | Входные данные (число [latex] N [/latex]) | Выходные данные (число билетов) |
---|---|---|
1. | 1 | 9 |
2. | 27 | 1 |
3. | 0 | 1 |
4. | 10 | 3969 |
5. | 3 | 100 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Test { static function main() { var N = 10; var c = 0; for ( i in 0...10 ) { // цикл, перебирает все варианты первой цифры трехзначного числа for ( j in 0...10 ) { // внутренний цикл, перебирает все варианты второй цифры if ( N - i - j >= 0 && N - i - j < 10 ) { //условие для третьей цифры c++; //подсчет подходящих номеров } } } trace(c * c); //увеличение количества в c раз для шестизначного числа } } |
Решение
Любой шестизначный номер можно представить как 2 трехзначных номера.
Для решения задачи рассмотрим все варианты трехзначных номеров. Две первые цифры такого номера могут быть любыми. Переберем все их комбинации с помощью двух циклов. А для определения третьей цифры будем использовать специальное условие. Она должна быть результатом вычитания двух первых цифр из [latex]N[/latex], и быть именно цифрой, то есть меньше 10.
Когда в цикле встречается подходящая комбинация, счетчик [latex]c[/latex] увеличивается на 1. Так как номер шестизначный, а счетчик [latex]c[/latex] подсчитывает удачные комбинации для трехзначного числа первой части, то и для трехзначного числа второй части он будет соответствовать. Следовательно, окончательное число комбинаций будет равно [latex]c \cdot c[/latex].
Оригинальное решение: cpp.mazurok.com.
Рабочий код для тестирования на try.haxe.org: Try Haxe !
- e-olymp 107. Компакт-диски - 23.06.2017
- e-olymp 128. Счастливые билеты - 22.06.2017
- e-olimp 248. Юный садовод - 22.06.2017