Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/02/2015, 10:31
sixtoex
 
Fecha de Ingreso: noviembre-2014
Mensajes: 34
Antigüedad: 9 años, 5 meses
Puntos: 1
[Ayuda]Factorial suma dígitos

n ! significa n × ( n - 1) × ... × 3 × 2 × 1

Por ejemplo, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3.628.800,
y la suma de los dígitos en el número 10! es 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

Encuentra la suma de los dígitos en el número 100!
-----------------------------------------------------------------------------------------

El programa hace las multiplicaciones correctamente, de cualquier numero, el problema es en el divisor, me explico, antes pongo el código:

Código Java:
Ver original
  1. public class FactorialDigito {
  2.  
  3.     public static void main(String[] args) {
  4.        
  5.         double Resultado = 1;
  6.         double divisor = 1;
  7.         long Sumatorio = 0;
  8.        
  9.        
  10.         for(int i =100 ; i >= 1;i--){
  11.        
  12.         if(divisor < Resultado){
  13.             divisor = divisor * 10;
  14.         }
  15.         Resultado = i * Resultado; 
  16.        
  17.         if(divisor > Resultado && i == 1){
  18.             divisor = divisor / 10;
  19.         }
  20.        
  21.         if(i == 1){
  22.         for(int x = 0; x == 0;){
  23.         Sumatorio = (long)(Resultado / divisor)%10+(Sumatorio);
  24.         divisor = divisor / 10;
  25.        
  26.         if(divisor == 1){
  27.             x = 1;
  28.         }
  29.         }
  30.        
  31.         }
  32.      
  33.         }
  34.            
  35. System.out.println(Sumatorio);
  36.     }
  37.  
  38. }

A ver el problema esta en la variable DIVISOR, cuando pongo un numero chiquitito(como 20)hace bien los (*10) pero cuando es un numero muy grande como por ejemplo 100, entonces el Divisor cuando llega a una cantidad muuuuuy grande, "se vuelve loco" y lo que hace es que se vuelve negativo.

10 = me da 27, que esta bien
20 = me da 54, tambien bien
30 = me da 157,¿Aquí ya no se si esta bien? (Aqui tambien hace cosas raras y se convierte en 9999999999999999 y luego se pone de nuevo a 1.0000000000000007E39 o lo que sea...)

Nota: No me hagan el código porfavor, prefiero que me ayudes antes que me hagas el código, para mejorar, gracias.

Que rabia me da

Saludos y muchisimas gracias a los que pierda tiempo en mi