• 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: Proporcionalidade
Autor: silvia fillet - Qui Out 13, 2011 22:46

Divida o numero 35 em partes diretamente proporcionais a 4, 10 e 14. Em seguida divida o mesmo numero em partes proporcionais a 6, 15 e 21. explique por que os resultados sao iguais.


Assunto: Proporcionalidade
Autor: silvia fillet - Sáb Out 15, 2011 10:25

POR GENTILEZA PODEM VERIFICAR SE O MEU RACIOCINIO ESTÁ CERTO?

P1 = K.4 SUBSTITUINDO K POR 1,25 P1= 5
P2 = K.10 SUBSTITUINDO K POR 1,25 P2= 12,50
P3 = K.13 SUBSTITUINDO K POR 1,25 P3= 17,50

P1+P2+P3 = 35
K.4+K.10+K.13 = 35
28 K = 35
K= 1,25


P1 = K.6 SUBSTITUINDO K POR 0,835 P1= 5
P2 = K.15 SUBSTITUINDO K POR 0,835 P2 = 12,50
P3 = K.21 SUBSTITUINDO K POR 0,835 P3 = 17,50
K.6+K.15+K.21 = 35
42K = 35
K= 0,833


4/6 =10/15 =14/21 RAZÃO = 2/3

SERÁ QUE ESTÁ CERTO?
ALGUEM PODE ME AJUDAR A EXPLICAR MELHOR?
OBRIGADA
SILVIA


Assunto: Proporcionalidade
Autor: ivanfx - Dom Out 16, 2011 00:37

utilize a definição e não se baseie no exercícios resolvidos da redefor, assim você terá mais clareza, mas acredito que sua conclusão esteja correto, pois o motivo de darem o mesmo resultado é pq a razão é a mesma.


Assunto: Proporcionalidade
Autor: Marcos Roberto - Dom Out 16, 2011 18:24

Silvia:
Acho que o resultado é o mesmo pq as razões dos coeficientes e as razões entre os números são inversamente proporcionais.

Você conseguiu achar o dia em que caiu 15 de novembro de 1889?


Assunto: Proporcionalidade
Autor: deiasp - Dom Out 16, 2011 23:45

Ola pessoal
Tb. estou no redefor
O dia da semana em 15 de novembro de 1889, acredito que foi em uma sexta feira


Assunto: Proporcionalidade
Autor: silvia fillet - Seg Out 17, 2011 06:23

Bom dia,
Realmente foi uma sexta feira, como fazer os calculos para chegar ?


Assunto: Proporcionalidade
Autor: ivanfx - Seg Out 17, 2011 07:18

Para encontrar o dia que caiu 15 de novembro de 1889 você deve em primeiro lugar encontrar a quantidade de anos bissextos que houve entre 1889 à 2011, após isso dá uma verificada no ano 1900, ele não é bissexto, pois a regra diz que ano que é múltiplo de 100 e não é múltiplo de 400 não é bissexto.
Depois calcule quantos dias dão de 1889 até 2011, basta pegar a quantidade de anos e multiplicar por 365 + 1 dia a cada ano bissexto (esse resultado você calculou quando encontrou a quantidade de anos bissextos)
Pegue o resultado e divida por 7 e vai obter o resto.
obtendo o resto e partindo da data que pegou como referência conte a quantidade do resto para trás da semana.


Assunto: Proporcionalidade
Autor: silvia fillet - Seg Out 17, 2011 07:40

Bom dia,
Será que é assim:
2011 a 1889 são 121 anos sendo , 30 anos bissextos e 91 anos normais então temos:
30x366 = 10.980 dias
91x365 = 33.215 dias
incluindo 15/11/1889 - 31/12/1889 47 dias
33215+10980+47 = 44242 dias

44242:7 = 6320 + resto 2

è assim, nâo sei mais sair disso.


Assunto: Proporcionalidade
Autor: ivanfx - Seg Out 17, 2011 10:24

que tal descontar 1 dia do seu resultado, pois 1900 não é bissexto, ai seria 44241 e quando fizer a divisão o resto será 1
como etá pegando base 1/01/2011, se reparar bem 01/01/2011 sempre cai no mesmo dia que 15/01/2011, sendo assim se 01/01/2011 caiu em um sábado volte 1 dia para trás, ou seja, você está no sábado e voltando 1 dia voltará para sexta.então 15/11/1889 cairá em uma sexta


Assunto: Proporcionalidade
Autor: Kiwamen2903 - Seg Out 17, 2011 19:43

Boa noite, sou novo por aqui, espero poder aprender e ajudar quando possível! A minha resposta ficou assim:


De 1889 até 2001 temos 29 anos bissextos a começar por 1892 (primeiro múltiplo de 4 após 1889) e terminar por 2008 (último múltiplo de 4 antes de 2011). Vale lembrar que o ano 1900 não é bissexto, uma vez que é múltiplo de 100 mas não é múltiplo de 400.

De um ano normal para outro, se considerarmos a mesma data, eles caem em dias consecutivos da semana. Por exemplo 01/01/2011 – sábado, e 01/01/2010 – sexta.

De um ano bissexto para outro, se considerarmos a mesma data, um cai dois dias da semana depois do outro. Por exemplo 01/01/2008 (ano bissexto) – Terça – feira, e 01/01/09 – Quinta-feira.

Sendo assim, se contarmos um dia da semana de diferença para cada um dos 01/01 dos 122 anos que separam 1889 e 2011 mais os 29 dias a mais referentes aos anos bissextos entre 1889 e 2011, concluímos que são 151 dias da semana de diferença, o que na realidade nos trás: 151:7= 21x7+4, isto é, são 4 dias da semana de diferença. Logo, como 15/11/2011 cairá em uma terça-feira, 15/11/1889 caiu em uma sexta-feira.