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!
import java.math.BigInteger;
public class prueba
{
public static void main(String[] args) {
int valor = 1;
BigInteger b1 = new BigInteger("1");
int NumeroFin = 0;
int FinalNumero = 0;
String NumeroFinCadena = "";
long fin = 100;
BigInteger Sumatorio = new BigInteger("1");
BigInteger Contador = new BigInteger("1");
for(int i = 1; i <= fin;i++){
b1 = b1.multiply(Sumatorio);
Sumatorio = Sumatorio.add(Contador);
if(i == fin){
System.out.println(b1);
NumeroFinCadena = String.valueOf(b1);
FinalNumero =NumeroFinCadena.length();
}
}
BigInteger b2 = new BigInteger("1");
BigInteger Multiplicador = new BigInteger("10");
int Compara = 0;
Compara = b1.compareTo(b2);
for(int i = 0 ; i <= fin;i++){
for(int x = 0; x <= fin*500;x++){
Compara = b1.compareTo(b2);
if(Compara == 1){
b2 = b2.multiply(Multiplicador);
}
Compara = b1.compareTo(b2);
if(Compara == -1){
b2 = b2.divide(Multiplicador);
}
}
System.out.println(b2);
i = (int)fin +1;
}
BigInteger bDivide = new BigInteger("10");
long GuardarAnterior = 0;
long ResultadoEntero = 0;
for(int i = 0; i < FinalNumero;i++){
BigInteger Resul = b1.divide(b2);
Resul = Resul.mod(bDivide);
b2 = b2.divide(bDivide);
ResultadoEntero = Resul.longValue();
GuardarAnterior = ResultadoEntero + GuardarAnterior;
}
System.out.println(GuardarAnterior);
}
}
Bueno, cualquier duda, dímelo 8)
Creo que en tu código te complicas mucho la vida. Además de estar ilegible sucio.
Procura darle una mirada a las convenciones del lenguaje, qué dice sobre identación, nombre de variables, nombres de clases, etc.
Te dejo mi código para que tengas una idea.
import java.math.BigInteger;
public class SumaFactorial {
public static void main(String args[]){
int numero = 100;
BigInteger factorial = calcularFactorial(numero);
int suma = sumarDigitos(factorial);
System.out.println(suma);
}
static BigInteger calcularFactorial(int numero){
if (numero == 1)
return new BigInteger("1");
return new BigInteger("" + numero).multiply(calcularFactorial(numero-1));
}
static int sumarDigitos(BigInteger numero){
int suma = 0;
for (Character c : numero.toString().toCharArray())
suma += Integer.parseInt("" + c);
return suma;
}
}
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Creo que en tu código te complicas mucho la vida. Además de estar ilegible sucio.
Procura darle una mirada a las convenciones del lenguaje, qué dice sobre identación, nombre de variables, nombres de clases, etc.
Te dejo mi código para que tengas una idea.
import java.math.BigInteger;
public class SumaFactorial {
public static void main(String args[]){
int numero = 100;
BigInteger factorial = calcularFactorial(numero);
int suma = sumarDigitos(factorial);
System.out.println(suma);
}
static BigInteger calcularFactorial(int numero){
if (numero == 1)
return new BigInteger("1");
return new BigInteger("" + numero).multiply(calcularFactorial(numero-1));
}
static int sumarDigitos(BigInteger numero){
int suma = 0;
for (Character c : numero.toString().toCharArray())
suma += Integer.parseInt("" + c);
return suma;
}
}
xD como que hace 1 semana empece a programar, yo lo veo bien,este si que lo veo bien ¿Cuanto llevas tu?
Creo que es normal