Задача взята с сайта 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 !
