O número de soluções inteiras não negativas de x₁+⋯+x_k=n é C(n+k−1,k−1), para n≥0 e k≥1. Represente n estrelas idênticas separadas em k caixas nomeadas por k−1 barras; barras adjacentes e nas extremidades permitem entradas zero. As caixas são distinguíveis, os objetos não. Contar tokens distintos atribuiria cada token independentemente, resultando em k^n antes de outras restrições. Decida o modelo pelo que os objetos e destinatários representam, não por um coeficiente binomial familiar.
Para alocações positivas x_i≥1, defina z_i=x_i−1; o total restante é n−k, resultando em C(n−1,k−1) quando n≥k. Limites inferiores mais gerais x_i≥a_i são tratados subtraindo cada a_i. Pelo menos um zero é o complemento de todas as entradas positivas: subtraia C(n−1,k−1) do total não negativo. Casos sobrepostos, como exatamente duas caixas vazias, exigem contagem diferente; subtrair cada caso de caixa vazia independentemente conta em dobro suas interseções.
Rastreie um fluxograma executando uma instrução por vez, registrando variáveis em uma tabela. Distinga atribuição de teste de igualdade matemática; o lado direito da atribuição usa o valor antigo antes da substituição. Registre qual ramificação executa a seguir e quais variáveis são resetadas. Um novo candidato de laço externo pode resetar uma soma interna sem resetar o próprio candidato. Para um processo que adiciona 1,3,5,… a S a partir de zero, após m adições S=m² e o próximo somando é 2m+1.
Um invariante de laço é verdadeiro antes e depois de cada iteração. O invariante da soma dos quadrados vale inicialmente em m=0 e é preservado porque m²+(2m+1)=(m+1)². Um invariante sozinho não prova terminação. Para testar se um inteiro N≥0 é quadrado adicionando números ímpares até S≥N, S cresce sem limite; equivalentemente, m aumenta e deve atingir um limite como N. Na saída, igualdade significa quadrado e ultrapassagem significa não quadrado. Um valor impresso deve ser alcançado em um caminho de execução real; um padrão numérico plausível sozinho não é um rastreamento.