• Anúncio Global
    Respostas
    Exibições
    Última mensagem

[Sequencial] Distribuição

[Sequencial] Distribuição

Mensagempor scifie » Sex Jun 01, 2012 15:30

Olá pessoal,

alguém poderia me indicar o que estudar para resolver um problema - particularmente chamo de distribuição - que manualmente é de fácil resolução mas não sei como fazê-lo matematicamente.

Eis o problema:

Tendo X bolinha, distribuir as bolinhas em N caixas de forma sequencial, tal que os valores presentes nas caixas fiquem uniformemente e sequencialmente distribuídos.

Um exemplo p/ descrever melhor o enunciado confuso:

Quantidade de bolinhas: 7 Quantidade de caixas: 4
Assim sendo, a caixas terão as seguintes qtde de bolinhas: [2][2][2][1]


Outro exemplo:

Quantidade de bolinhas: 13 Quantidade de caixas: 3
Assim sendo, a caixas terão as seguintes qtde de bolinhas: [5][4][4]


A idéia básica é ir colocando as bolinhas uma por uma nas caixas, qndo chegar na última caixa, volta p/ primeira e continua o processo até que as bolinhas acabem.


Alguém poderia me ajudar?
scifie
Novo Usuário
Novo Usuário
 
Mensagens: 2
Registrado em: Sex Jun 01, 2012 15:22
Formação Escolar: GRADUAÇÃO
Área/Curso: Ciência da Computação
Andamento: formado

Re: [Sequencial] Distribuição

Mensagempor LuizAquino » Sex Jun 01, 2012 19:08

scifie escreveu:Olá pessoal,

alguém poderia me indicar o que estudar para resolver um problema - particularmente chamo de distribuição - que manualmente é de fácil resolução mas não sei como fazê-lo matematicamente.

Eis o problema:

Tendo X bolinha, distribuir as bolinhas em N caixas de forma sequencial, tal que os valores presentes nas caixas fiquem uniformemente e sequencialmente distribuídos.

Um exemplo p/ descrever melhor o enunciado confuso:

Quantidade de bolinhas: 7 Quantidade de caixas: 4
Assim sendo, a caixas terão as seguintes qtde de bolinhas: [2][2][2][1]


Outro exemplo:

Quantidade de bolinhas: 13 Quantidade de caixas: 3
Assim sendo, a caixas terão as seguintes qtde de bolinhas: [5][4][4]


A idéia básica é ir colocando as bolinhas uma por uma nas caixas, qndo chegar na última caixa, volta p/ primeira e continua o processo até que as bolinhas acabem.

Alguém poderia me ajudar?


Basta aplicar o princípio de divisão.

Exemplo 1) Quantidade de bolinhas: 7. Quantidade de caixas: 4.

Dividindo 7 por 4 obtemos quociente 1 e resto 3. Ou seja, 7 = 4*1 + 3. Isso significa que primeiro vamos colocar 1 bolinha em cada uma das 4 caixas, mas sobrarão 3 bolinhas. Cada bolinha que sobrou colocaremos em uma das 3 primeiras caixas. Ficamos então com: [2][2][2][1].

Exemplo 2) Quantidade de bolinhas: 13. Quantidade de caixas: 3.

Dividindo 13 por 3 obtemos quociente 4 e resto 1. Ou seja, 13 = 3*4 + 1. Isso significa que primeiro vamos colocar 4 bolinhas em cada uma das 3 caixas, mas sobrará 1. A bolinha que sobrou colocaremos na primeira caixa. Ficamos então com: [5][4][4].
professoraquino.com.br | youtube.com/LCMAquino | @lcmaquino

"Sem esforço, não há ganho."
Dito popular.
Avatar do usuário
LuizAquino
Colaborador Moderador - Professor
Colaborador Moderador - Professor
 
Mensagens: 2654
Registrado em: Sex Jan 21, 2011 09:11
Localização: Teófilo Otoni - MG
Formação Escolar: PÓS-GRADUAÇÃO
Área/Curso: Mestrado - Modelagem Computacional
Andamento: formado

Re: [Sequencial] Distribuição

Mensagempor scifie » Seg Jun 04, 2012 19:47

Valeu :y:

Com isso é possível criar um algoritmo que distribua as bolinhas em apenas O(n) - sendo n a qtde de caixas. Claro que a aplicação para o meu caso não tem nada a ver com bolinhas, hehehe. A questão é determinar quantos espaços deverão ser acrescentados ao espaços já existentes em uma linha de texto de forma que a linha seja apresentada de forma justificada.

Sei que não é um fórum de programação, mas eis aqui o algoritmo utilizando para o problema das bolinhas:

Código: Selecionar todos
#include "stdafx.h"
#include <process.h>

int main(int argc, char* argv[])
{
    int bolinhas, caixas;

    printf("Informe a qtde de bolinhas e caixas!\n");
    int n = scanf("%d %d", &bolinhas, &caixas);
    if (n != 2)
        return 0;

    int qtdePorCaixa = bolinhas / caixas;
    int qtdeRestante = bolinhas - (caixas * qtdePorCaixa);
   
    for (int c = 0; c < caixas; c++)
        printf("Caixa %d contém %d bolinhas\n", c + 1, qtdePorCaixa + (c < qtdeRestante ? 1 : 0));

    system("pause");
    return 0;
}
scifie
Novo Usuário
Novo Usuário
 
Mensagens: 2
Registrado em: Sex Jun 01, 2012 15:22
Formação Escolar: GRADUAÇÃO
Área/Curso: Ciência da Computação
Andamento: formado


Voltar para Sequências

 



  • Tópicos relacionados
    Respostas
    Exibições
    Última mensagem

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

 



Assunto: método de contagem
Autor: sinuca147 - Seg Mai 25, 2009 09:10

Veja este exercício:

Se A = {x \in Z \hspace{1mm} | \hspace{1mm} \frac{20}{x} = n, n \in N} e B = {x \in R \hspace{1mm} | \hspace{1mm} x = 5m, m \in z}, então o número de elementos A \cap B é:

Eu tentei resolver este exercício e achei a resposta "três", mas surgiram muitas dúvidas aqui durante a resolução.

Para determinar os elementos do conjunto A, eu tive de basicamente fazer um lista de vinte dividido por todos os números naturais maiores que zero e menores que vinte e um, finalmente identificando como elementos do conjunto A os números 1, 2, 4, 5, 10 e 20. Acho que procedi de maneira correta, mas fiquei pensando aqui se não existiria um método mais "sofisticado" e prático para que eu pudesse identificar ou ao menos contar o número de elementos do conjunto A, existe?

No processo de determinação dos elementos do conjunto B o que achei foi basicamente os múltiplos de cinco e seus opostos, daí me surgiram estas dúvidas:

existe oposto de zero?
existe inverso de zero?
zero é par, certo?
sendo x um número natural, -x é múltiplo de x?
sendo z um número inteiro negativo, z é múltiplo de z?
sendo z um número inteiro negativo, -z é múltiplo de z?

A resposta é 3?

Obrigado.


Assunto: método de contagem
Autor: Molina - Seg Mai 25, 2009 20:42

Boa noite, sinuca.

Se A = {x \in Z \hspace{1mm} | \hspace{1mm} \frac{20}{x} = n, n \in N} você concorda que n só pode ser de 1 a 20? Já que pertence aos naturais?
Ou seja, quais são os divisores de 20? Eles são seis: 1, 2, 4, 5, 10 e 20.
Logo, o conjunto A é A = {1, 2, 4, 5, 10, 20}

Se B = {x \in R \hspace{1mm} | \hspace{1mm} x = 5m, m \in z} você concorda que x será os múltiplos de 5 (positivos e negativos)? Já que m pertence ao conjunto Z?
Logo, o conjunto B é B = {... , -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, ...

Feito isso precisamos ver os números que está em ambos os conjuntos, que são: 5, 10 e 20 (3 valores, como você achou).

Vou responder rapidamente suas dúvidas porque meu tempo está estourando. Qualquer dúvida, coloque aqui, ok?

sinuca147 escreveu:No processo de determinação dos elementos do conjunto B o que achei foi basicamente os múltiplos de cinco e seus opostos, daí me surgiram estas dúvidas:

existe oposto de zero? sim, é o próprio zero
existe inverso de zero? não, pois não há nenhum número que multiplicado por zero resulte em 1
zero é par, certo? sim, pois pode ser escrito da forma de 2n, onde n pertence aos inteiros
sendo x um número natural, -x é múltiplo de x? Sim, pois basta pegar x e multiplicar por -1 que encontramos -x
sendo z um número inteiro negativo, z é múltiplo de z? Sim, tais perguntando se todo número é multiplo de si mesmo
sendo z um número inteiro negativo, -z é múltiplo de z? Sim, pois basta pegar -z e multiplicar por -1 que encontramos x

A resposta é 3? Sim, pelo menos foi o que vimos a cima


Bom estudo, :y:


Assunto: método de contagem
Autor: sinuca147 - Seg Mai 25, 2009 23:35

Obrigado, mas olha só este link
http://www.colegioweb.com.br/matematica ... ro-natural
neste link encontra-se a a frase:
Múltiplo de um número natural é qualquer número que possa ser obtido multiplicando o número natural por 0, 1, 2, 3, 4, 5, etc.

Para determinarmos os múltiplos de 15, por exemplo, devemos multiplicá-lo pela sucessão dos números naturais:

Ou seja, de acordo com este link -5 não poderia ser múltiplo de 5, assim como 5 não poderia ser múltiplo de -5, eu sempre achei que não interessava o sinal na questão dos múltiplos, assim como você me confirmou, mas e essa informação contrária deste site, tem alguma credibilidade?

Há e claro, a coisa mais bacana você esqueceu, quero saber se existe algum método de contagem diferente do manual neste caso:
Para determinar os elementos do conjunto A, eu tive de basicamente fazer um lista de vinte dividido por todos os números naturais maiores que zero e menores que vinte e um, finalmente identificando como elementos do conjunto A os números 1, 2, 4, 5, 10 e 20. Acho que procedi de maneira correta, mas fiquei pensando aqui se não existiria um método mais "sofisticado" e prático para que eu pudesse identificar ou ao menos contar o número de elementos do conjunto A, existe?