Нехай — кількість карт, необхідних для побудови карткового будинку висоти . Наприклад, f(1) = 2, f(2) = 7, f(3) = 15.
Щоб побудувати будинок висоти , в основі необхідно встановити будинків висоти , на що знадобиться карт, а також h - 1 перекриттів. На цю основу потім встановлюється будинок висоти h - 1, для будівництва якого потрібно f(h - 1) карт.
Відповідно,
або
Виведемо явну формулу. Послідовно розкриваючи рекурсію, отримаємо:
Приклад
Для будинку висоти достатньо карти.
Для будинку висоти необхідно карт.
Будинок висоти можна побудувати із карт.

Реалізація алгоритму
Читаємо висоту будинку .
scanf("%lld", &n);Визначаємо та виводимо кількість карт у будинку.
res = n * (3 * n + 1) / 2;
printf("%lld\n", res);