Количество неотрицательных целых решений уравнения x₁+⋯+x_k=n равно C(n+k−1,k−1) при n≥0 и k≥1. Представьте n одинаковых звёзд, разделённых на k различных ящиков, с помощью k−1 перегородок; соседние перегородки и перегородки у краёв допускают нулевые значения. Ящики различимы, объекты — нет. Если бы подсчитывались различные токены, то каждому из них присваивалось бы значение независимо, что дало бы k^n до учёта других ограничений. Выбор модели зависит от того, чем являются объекты и получатели, а не от знакомства с биномиальным коэффициентом.
Для положительных распределений xᵢ≥1 положите zᵢ=xᵢ−1; оставшаяся сумма равна n−k, что даёт C(n−1,k−1) при n≥k. Более общие нижние границы xᵢ≥aᵢ обрабатываются вычитанием каждого aᵢ. Наличие хотя бы одного нуля является дополнением условия о положительности всех элементов: вычтите из общего числа неотрицательных решений C(n−1,k−1). Пересекающиеся случаи, такие как ровно две пустые коробки, требуют иного подсчёта; независимое вычитание случаев с пустыми коробками приводит к двойному подсчёту их пересечений.
Проследите блок-схему, выполняя операторы по одному, записывая переменные в таблицу. Различайте присваивание и математическую проверку равенства; правая часть присваивания использует старое значение до замены. Записывайте, какой веткой выполняется следующий шаг и какие переменные сбрасываются. Новый кандидат внешнего цикла может обнулить внутреннюю сумму, не обнуляя самого кандидата. Для процесса, добавляющего к S значения от 0 до ⟨1,3,5⟩, после m операций S=m², а следующее слагаемое равно 2m+1.
Инвариант цикла верен до и после каждой итерации. Инвариант квадратов сумм выполняется изначально при m=0 и сохраняется, так как m²+(2m+1)=(m+1)². Одного инварианта недостаточно для доказательства завершения. Чтобы проверить, является ли целое число N≥0 квадратом путём сложения нечётных чисел, пока S≥N, S возрастает неограниченно; эквивалентно, m увеличивается и должно достичь верхней границы, например N. В момент выхода равенство означает квадрат, а превышение — неквадрат. Распечатанное значение должно быть достигнуто на фактическом пути выполнения; одна лишь правдоподобная числовая закономерность не является трассировкой.