Héctor

...

Problem 16

, ,

Estos dias he estado trabajando en la resolucion de problemas del Proyecto Euler smile

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

eek confused me dije ¿Como sumare ese numero? nervous despues de pensar un poco cambie a Perl como lenguaje de programacion.

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 :Dla cual es 1366.

YO TAMBIEN TE QUIERORECASPITAS

Comments

Anonymous Tuesday, March 17, 2009 4:22:59 AM

David Moreno writes: 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/

Monymonykah Friday, March 20, 2009 3:43:48 AM

O.o mi no entender XD, jaja, mi novio es programador y he visto lo que hace y la verdad hasta me duele la cabeza de ver tanto numerito, signos y etc, jeje...Soy mala para este tipo de cosas XD

Saludines...

Héctorhreyes Friday, March 20, 2009 6:27:54 AM

jejeje ya me imagino cuando te platica de las cosas que hace lol siempre encuentro divertido explicar a otros lo que hago, pero no me entienden seguramente he de ser muy malo explicando las cosas.

Que este bien smile

Anonymous Wednesday, July 8, 2009 6:42:00 AM

Anonimo writes: en python: r = 2**1000 s = str(r) suma = 0 for i in s: suma = suma + int(i) print suma

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies