Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, fiz o seguinte exercício de lógica:
Uma rainha requisitou os serviços de um monge e disse-lhe que pagaria qualquer preço. O monge, necessitando de alimentos, indagou à rainha sobre o pagamento, se poderia ser feito com grãos de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter apenas um grão e os quadros subsequentes, o dobro do quadro anterior. A rainha achou o trabalho barato e pediu que o serviço fosse executado, sem se dar conta de que seria impossível efetuar o pagamento. Faça um algoritmo para calcular o número de grãos que o monge esperava receber.
Nem achei difícil montar a estrutura em sí, porém o resultado saiu diferente do que vi na internet, o código php é esse:
<?php
ini_set("default_charset", "utf-8");
$tq = 64;
$g = 1;
$l = 1;
while($l<=$tq):
$g = $g*2;
if($l>=$tq):
echo $g;
endif;
$l++;
endwhile;
?>
E o resultado deu: 1.844674407371E+19, não sei se está correto, pois neste tópico: http://forum.imasters.com.br/topic/430947-resolvidoantigo-conto-da-rainha-e-monge/ o resultado é: 18.446.744.073.709.551.615, alguém pode me ajudar? está correto ou não?
>
O problema maior, que eu vejo, é na sua representação.
Como o número excede o tamanho máximo da representação, o valor é representado em conotação científica (resumindo, é o E+19).
Tente utilizar printf() ao invés de apenas echo, você pode utilizar o format '%d' ou '%u'
utilizei o printf() e o resultado foi o mesmo
teu pc é 32 ou 64 bits? Além do mais, está usando o PHP compatível com 64bits?
Olá, meu sistema é 32 bits mas não sei se o php é compatível, onde posso ver?
Utilize a função
phpinfo()
Utilizei o phpinfo(), se não me engano é em Architecture, que deu x86. Acho que é por isso.
O problema maior, que eu vejo, é na sua representação.
Como o número excede o tamanho máximo da representação, o valor é representado em conotação científica (resumindo, é o E+19).
Tente utilizar printf() ao invés de apenas echo, você pode utilizar o format '%d' ou '%u'