Formas divertidas de calcular el último lugar

Hice algunas preguntas interesantes hoy y encontré algunos algoritmos muy interesantes. De hecho, es mejor decir que entiendo el método, entiendo el significado de las preguntas y resuelvo los problemas desde otro ángulo, convirtiéndome en la primera opción para los jugadores novatos de estas preguntas.

En primer lugar, la sexta pregunta está diseñada para encontrar 13 ^ 13. Si sigo mi idea original y uso la recursividad para encontrar el resultado y luego tomo el resto, aparecerá un resultado negativo. Más tarde, encontré otra forma de multiplicar y tomar el resto, porque cada vez Solo los últimos tres dígitos de cada cálculo son útiles para los requisitos de la pregunta, por lo que se utiliza un bucle para encontrar los últimos tres dígitos de cada producto para evitar el problema anterior.

#include <stdio.h>

#define T 1
#define F 0

int fac(int n,int m)//递归失败
{
	if(n == 1)
	{
		return m;
	}
	return fac(n-1,m)*m;
}

int main()
{
	int x,y;
	int last = 1;
	int j;
	for(j = 0;j < 13;j++)
	{
		last = last*13%1000;
	}
	//unsigned int i = fac(13,13) % 1000;
    printf("后三位的结果是%d\n",last);

    return 0;
}

La séptima pregunta es encontrar ¿cuántos ceros hay al final del factorial de 100?

#include <stdio.h>

int main()
{
	int i;
	int count = 0;
	for(i = 5;i <= 100;i += 5)
	{
		count++;
		if(0 == (i%25))
		{
			count++;
		}
	}
	printf("100的阶乘末尾0的数量为:%d\n",count);

    return 0;
}

Hay varios ceros al final de un número, dependiendo del par de números 2 y 5 del factor multiplicador.

Contemos primero el número de factores de 5: dentro de 100, los números que tienen 5 como factor son 5, 10, 15, 20, 25... Son 20 en total. Pero observe que 25, 50, 75 y 100 contienen dos 5 como factores (25=5*5, 50=2*5*5), por lo que,
para estos números, debemos multiplicarlos una vez. Entonces hay 24 5 factores en total.
Desde la perspectiva de la fórmula: El número de 5 factores = 100/5 + 100/(5^2) + 100/(5^3) + ... = 24 (debe ser un número entero) Ahora cuenta el número de 2 factores: 2
, 4, 6, 8, 10, ... Hay un total de 100/2=50 2 factores, 100/4=25 4 factores (se requiere un conteo más), 100/8=12 8- factores (se requiere un recuento más),...
entonces el número de 2 factores = 100/2 + 100/(2^2) + 100/(2^3) + 100/(2^4) + 100/ (2^5) + 100/( 2^6) + 100/(2^7) + ... = 97
 
En resumen, hay 24 5 factores y 97 2 factores, por lo que podemos calcular 24 (2 ,5) pares.
Entonces el factorial de 100 tiene 24 ceros a la derecha.

Supongo que te gusta

Origin blog.csdn.net/ls_dashang/article/details/81589043
Recomendado
Clasificación