| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2010 17:07:23
|
Felagund
GUJ Master
![[Avatar]](/images/avatar/d8d855c465198499868fb2b566ebee8d.jpg)
Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline
|
sergiotaborda wrote:
O truque do long só se aplica ao padrão Money e não à soma de numero arbitráriamente grandes. É que o máximo valor de um long em dinheiro,em qualquer moeda, é grande o suficiente.
Para aritmética de inteiros enormes, BigInteger é o cara. A mecanismo do BigInteger é separar os algarismos numa array de int em que cada elemento vai de 0 a 9 e somar como fazemos à mão. mas o biginteger também é limitado ao numero de elementos num array que é a quantidade de inteiros positivos.
Sim normalmente uso o BigInteger, porém ela citou que não podia usar a API padrão na questão. por isso citei o money mas como referencia do que como solução.
|
att
Rafael Felix
Rolling With Code
Twitter |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2010 18:06:12
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5089
Online
|
Eu lembro de ter implementado isso em uma calculadora programável (TI-59) há várias décadas atrás.
Eu tinha implementado a adição, subtração, multiplicação e divisão.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2010 23:18:17
|
Andre Brito
JWizard
Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline
|
Não sei se já falaram, mas você pode implementar o ALGORITMO BigNum. Soma e subtração são bem fáceis de fazer... É na multiplicação e divisão que o bicho pega. Editado: ali eles usam o BigInteger do Java pra mostrar como é feito na linguagem... Mas o princípio teórico acho que pode ser o mesmo. Veja este site, do Vinícius Fortuna (um dos top em algoritmos, na minha opinião), que tem os notebooks. O da PUC tem o algoritmo implementado em C. Aliás, acho que +- (ou exatamente) o que o entanglement explicou.
This message was edited 2 times. Last update was at 12/03/2010 23:28:06
|
Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2010 16:42:34
|
Dryca
What is classpath?
![[Avatar]](/images/avatar/d56b7e3ab2e7e5e779c5127f56de5c00.jpg)
Membro desde: 09/03/2010 10:10:00
Mensagens: 7
Offline
|
oi galera
comecei a fazer o codigo de acordo com as instruçoes do entanglement:
dai tahficando assim
public class NumerosGigantes {
String pri = "311415926535897932384626433832795";
String seg = " 58598744820488384738229308546322";
private void Somar(){
int i = Integer.parseInt(pri);
int j = Integer.parseInt(seg);
int[] a = new int[4];
a[0]= 433832795;
a[1]= 932384626;
a[2]= 926535897;
a[3]= 31415;
int[] b = new int[4];
b[0]= 874713527;
b[1]= 452353602;
b[2]= 818284590;
b[3]= 27182;
int[] c = new int[5];
c[0] = a[0] + b[0];
if (c[0]>= 1000000000){
c[0]= c[0]% 1000000000;
c[1]= c[0];
}
c[1]= a[1]+b[1];
if (c[1]>= 1000000000){
c[1]= c[1]% 1000000000;
c[2]= c[1];
}
c[2]= a[2]+b[2];
if (c[2]>= 1000000000){
c[2]= c[2]% 1000000000;
c[3]= c[2];
}
c[3]= a[3]+b[3];
c[4]=0;
}
}
qunado chega nessa parte:
Para converter o número de novo para uma string, devemos então pegar
cada int no array c, e imprimi-lo com 9 algarismos, completando com
zeros à esquerda se for o caso. Não se esquecer que é para pegar cada
número de trás para frente. Pus alguns espaços para você entender
melhor.
eu nao tenho ideia de como fazer....
uma ajuda?
This message was edited 2 times. Last update was at 14/03/2010 16:51:41
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 09:33:37
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17539
Offline
|
Só vou indicar que, para imprimir um número com zeros à esquerda e com 9 casas, você pode usar String.format:
|
|
|
|
 |
|
|