To mais perdido que cego em tiroteio hahahaha.
BigInteger eh uma classe, ela implementa números inteiros grandes, e tem os métodos para manipular estes números e fazer operações com eles.
[ON-TOPIC] Fala pro teu professor que a quantidade de números não cabe em int , então tu foi na internet achar uma solução e aprendeu a usar o BigInteger.
[OFF-TOPIC] Segue trecho do livro o homem que calculava, do Malba tahan, que tem um problema igual a esse teu:
[quote]Nada mais simples - elucidou Sessa. - Dar-me-eis um grão de trigo pela
primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela
quarta, e, assim dobrando sucessivamente, até a sexagésima quarta e última casa
do tabuleiro. Peço-vos, ó rei, de acordo com a vossa magnânima oferta, que
autorizeis o pagamento em grãos de trigo, e assim como indiquei!
Não só o rei como os vizires e venerandos brâmanes presentes riram-se,
estrepitosamente, ao ouvir a estranha solicitação do jovem. A desambição que
ditara aquele pedido era, na verdade, de causar assombro a quem menos apego
tivesse aos lucros materiais da vida. O moço brâmane, que bem poderia obter do
rei um palácio ou uma província, contentava-se com grãos de trigo!
- Insensato! - clamou o rei. - Onde foste aprender tão grande desamor à
fortuna? A recompensa que me pedes é ridícula. Bem sabes que há, num punhado
de trigo, número incontável de grãos. Devemos compreender, portanto, que com
duas ou três medidas de trigo eu te pagarei folgadamente, consoante o teu pedido,
pelas 64 casas do tabuleiro. É certo, pois, que pretendes uma recompensa que mal
chegará para distrair, durante alguns dias, a fome do último pária1 do meu reino.
Enfim, visto que minha palavra foi dada, vou expedir ordens para que o
pagamento se faça imediatamente, conforme teu desejo.
Mandou o rei chamar os algebristas mais hábeis da corte e ordenou-lhes
calculassem a porção de trigo que Sessa pretendia.
Os sábios calculistas, ao cabo de algumas horas de acurados estudos,
voltaram ao salão para submeter ao rei o resultado completo de seus cálculos.
Perguntou-lhes o rei, .interrompendo a partida que então jogava: - Com quantos grãos de trigo poderei, afinal, desobrigar-me da promessa
que fiz ao jovem Sessa? - Rei magnânimo! - declarou o mais sábio dos matemáticos. - Calculamos
o número de grãos de trigo que constituirá o pagamento pedido por Sessa, e
obtivemos um número2 cuja grandeza é inconcebível para a imaginação humana.
Avaliamos, em seguida, com o maior rigor, a quantas ceiras3 corresponderia esse
número total de grãos, e chegamos à seguinte conclusão: a porção de trigo que
deve ser dada a Lahur Sessa equivale a uma montanha que, tendo por base a
cidade de Taligana, seria cem vezes mais alta do que o Himalaia! A índia inteira,
semeados todos os seus campos, taladas todas as suas cidades, não produziria em
2 000 séculos a quantidade de trigo que, pela vossa promessa, cabe, em pleno
direito, ao jovem Sessa![/quote]
[quote=ivo costa][ON-TOPIC] Fala pro teu professor que a quantidade de números não cabe em int , então tu foi na internet achar uma solução e aprendeu a usar o BigInteger.
[/quote]
E torce pra ele não ser usuário do GUJ… eheheheh
Vai ver, o professor dele é o DONO do GUJ!
Hahaha…
É claro que não; se fosse um dos irmãos Silveira (da Caelum), fundadores do GUJ, o Galactus já teria levado um puxão de orelha. De qualquer maneira, eles não ficam dando esses problemas …
Pode cre…
Problema retardado…
Se meu professor pedisse isso pra mim eu bateria nele…
HAHAHAHAHAHHA, VOCÊS SÃO FOGO EM HAHAHAHA, MAS AE, COMO É QUE EU PODERIA FAZER ESSE PROGRAMA SEM ESSE TAL DE BIGINTEGER E COM APENAS O LAÇO FOR???
[quote=jpcasati]Pelo que entendi…
[code]
int soma = 0;
int j = 1;
for (int i=1;i<=64;i++){
soma = soma + j;
j = j*2;
}
System.out.println("Total de Grãos de Trigo: "+soma);
[/code][/quote]
Sem o BigInteger faça como jpcasati ensinou…
Mas não irá funcionar pois o número da resposta é grande demais para os tipos primitivos int ou long…
E se fazer com LONG ou DOUBLE, será que não funciona???
Teste e veja por você mesmo…
Ei galera, me fala uma coisa, o total de grãos de trigo é esse aqui ó:
590295810358705651712 ???
[quote=GALACTUS]Ei galera, me fala uma coisa, o total de grãos de trigo é esse aqui ó:
590295810358705651712 ???[/quote]
Já foi postado a solução e a respota no tópico…
A é pode crê véiu, o resultado é 18 446 744 073 709 551 615, caramba é trigo pra cacete, bom então o programa do jpcasati também tá errado porque ele está dando o outro valor que eu tinha digitado. Caramba, que programa embassado esse véiu, mas eu to tentando fazer essa bagaça, se alguem conseguir ae, dá uma força pra mim beleza, valeu galera.
O primeiro programa dele(este abaixo) está funcionando.
[code]int soma = 0;
int j = 1;
for (int i=1;i<=64;i++){
soma = soma + j;
j = j*2;
}
System.out.println("Total de Grãos de Trigo: "+soma);
[/code]
Só que esse não mostra o valor todo. O que tem BigInteger nao testei.
Ora, se você sabe que o resultado é 2 elevado a 64 menos 1, ou seja, 18.446.744.073.709.551.615, que é um pouco mais que o dobro do que cabe em um long (2 elevado a 63 menos 1, ou seja, 9.223.372.036.854.775.807, de duas uma:
- Ou seu professor está confundindo C com Java (no C existe um tipo “unsigned __int64” que tem como valor máximo 18.446.744.073.709.551.615)
- Ou então ele quer que vocês façam pesquisa e aprendam a usar as capacidades do Java.
Ou ele anda tomando muita xicara de café ultimamente, mas eu vou tentar aquele outro exemplo. Valeu.
O outro exemplo corrigido:
[code]BigInteger soma = new BigInteger(“0”);//somatoria final
BigInteger mul = new BigInteger(“2”);//multiplicacao do j
BigInteger j = new BigInteger(“1”);//inicio da variavel de incremento
for (int i = 1; i <= 64; i++) {
//faz o incremento na soma, adicionando ela mesma somando o j
soma = soma.add(j);
// o j recebe ele vezes 2
j = j.multiply(mul);
}
System.out.println("Total de Grãos de Trigo: " + soma);
}[/code]
Estranho, esse outro exemplo que o marcio_gs citou está dando -1, caramba, a hora que eu chagar na sala de aula, vou fazer o meu professor comer trigo até ele cair morto no chão, que programa dificil do cacete pra iniciantes.!!!
Aqui ainda dá -1…mesmo com BigInteger!