Aula 2.27: Como fazer decomposição de número em C

COMPARTILHAR:

Whatsapp Telegram Twitter Facebook Reddit

Aula 2.27 - Exercício sobre como encontrar os números que formam as partições únicas de um inteiro qualquer.

Este artigo faz parte do projeto #LTCode

Exercício: Fazer a decomposição de um número inteiro positivo na soma de todos os possíveis fatores. Exemplo:

4
3+1
2+2
2+1+1
1+1+1+1

Entendeu? Tente fazer aí.
~
~~
~~~
~~~~
~~~~~

Resolução:



Bom, a ideia é imprimir os números em ordem decrescente. Os números que formam uma decomposição são obtidos a partir da decomposição que fizemos anteriormente a eles, por exemplo na decomposição do número 4: "2 + 2" é obtido a partir de "3 + 1". Cada decomposição é armazenada no vetor "vet[]" que é inicializado com o número que deseja decompor, assim imprimimos o vetor e em seguida atualizamos ele com a próxima decomposição. O loop do primeiro while (linha 5) termina quando a decomposição atual for somente de números 1 (linha 17).

Como obter uma decomposição a partir da decomposição atual? Bom, dado o vetor e seu tamanho, nós precisamos atualizar o vetor para armazenar a próxima decomposição. Valores no vetor precisam estar em ordem decrescente.

1- Encontre um valor diferente de 1 a mais direita do vetor, e armazene a contagem de números 1's  na variável "vaium", que indicará a soma dos valores no lado direito a ser atualizado. Nossa variável "ultimo" será nosso index de valores diferentes de um.

2- Decremente o valor do vetor em 1 e aumente o valor de "vaium" em 1 (linhas 20 e 21). Assim:

  • Se o vetor na posição da variável "ultimo" é maior ou igual a variável "vaium", coloque "vaium" na posição "ultimo" do vetor, assim o vetor na posição "ultimo+1" será nossa nova decomposição (linhas 28 e 29).
3- Copie o vetor na posição "ultimo" para posição "ultimo+1" e reduza "vaium" enquanto o vetor na posição "ultimo" for menor que "vaium".

Recomendo realizar um teste de mesa, caso tenha ficado complexo o entendimento.

>> Próxima aula, clique aqui.

Fonte: https://www.geeksforgeeks.org/generate-unique-partitions-of-an-integer/

COMENTÁRIOS

Nome

#ann,25,#HK,30,#LTCode,130,Artigo - Diversos,156,Artigo - Games,201,Artigo - Tecnologia,615,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,72,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,8,HN,12,logica,14,Pentest,23,Programar C,29,Programar POO,6,Programar Python,6,Programar Shell,25,Programar verilog,12,qradar,4,Raspberry Pi,15,Redes,3,root,117,Shorty Awards,1,Smartphones - Reviews,33,Teoria,10,Top Nostalgia,2,VPN,19,WhatsApp,46,
ltr
item
Limon Tec: Aula 2.27: Como fazer decomposição de número em C
Aula 2.27: Como fazer decomposição de número em C
Aula 2.27 - Exercício sobre como encontrar os números que formam as partições únicas de um inteiro qualquer.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s640/ltcode.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s72-c/ltcode.jpg
Limon Tec
https://www.limontec.com/2019/09/aula-2-27-linguagem-c-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2019/09/aula-2-27-linguagem-c-ltcode.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo