Аналіз алгоритму
Позначимо через кількість способів, якими можна покрити прямокутник 2 × кістками доміно 2 × 1. Очевидно, що
, одна вертикальна кістка;
, дві вертикальні або дві горизонтальні кістки.
Розглянемо алгоритм обчислення . Можна покласти одну кістку вертикально і далі покривати прямокутник довжиною способом, або покласти дві кістки горизонтально і далі покривати прямокутник довжиною способами. Тобто .
Таким чином, є числом Фібоначчі.
Реалізація алгоритму
Оскільки , то слід скористатися довгою арифметикою або мовою програмування Java.
import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); int n = con.nextInt(); BigInteger a = new BigInteger("1"), b = a; for(int i = 0; i < n; i++) { BigInteger temp = a.add(b); a = b; b = temp; } System.out.println(a); con.close(); } }