Problem 16
Monday, 16. March 2009, 22:16:07
Me llama la atencion el Problema 16:
2^15 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26. What is the sum of the digits of the number 2^1000?
Pues tenemos que sumar todos los digitos del resultado de 2^1000, no lo vi tan complicado y decidi hacerlo en C#, especificamente en mono.
Al momento de escribir:
resultado = Math.Pow(2,1000):
El resultado es:
1.07150860718627e+301
use strict;
use warnings;
my $res = 2**1000;
my $suma = 0;
my $char = "";
my @txt = split(//,sprintf("%f",$res));
foreach $char (@txt){
$suma = $suma + $char;
}
print $suma,"\n";
Donde:
my $res = 2**1000;--> hace lo mismo que Math.Pow(2,1000)
my @txt = split(//,sprintf("%f",$res)); --> generamos una arreglo de tipo char del resultado.
sprintf("%f",$res) --> esta linea de genera:
10715086071862673209484250490600018
10561404811705533607443750388370351
05112493612249319837881569585812759
46729175531468251871452856923140435
98457757469857480393456777482423098
54210746050623711418779541821530464
74983581941267398767559165543946077
06291457119647768654216766042983165
2624386837205668069376.000000
como vemos es muy diferente a 1.07150860718627e+301 y con el $suma = $suma + $char; sabremos la suma de todos los numeros del arreglo









Anonymous # 17. March 2009, 04:22
Me encantan estos problemas. Y aunque me duela muchísimo aceptarlo, Ruby es muuuuuucho mejor para este tipo de cosas que Perl:
>> tot = 0; (2**1000).to_s.split(//).each do |x| tot += x.to_i; end; tot
=> 1366
Saludos!
http://damog.net/
monykah # 20. March 2009, 03:43
Saludines...
hreyes # 20. March 2009, 06:27
Que este bien
Anonymous # 8. July 2009, 06:42
en python:
r = 2**1000
s = str(r)
suma = 0
for i in s:
suma = suma + int(i)
print suma