ZCMU-1129 se enamoró de ti accidentalmente (problema del agua de la fórmula)

tema

1129: Capítulo cinco: Enamorarse de ti accidentalmente

Límite de tiempo: 5 segundos Límite de memoria: 128 MB
Envío: 661 Resuelto: 176
[Enviar] [Estado] [Tarjeta web]
Descripción

La mayoría de las personas con sangre O son activistas, y Zheng Wei ha llevado esta característica al extremo. Al día siguiente, en la clase, Ruan Ruan se sorprendió al descubrir que estaba luchando para escribir en clase como nunca antes, así que se inclinó y le preguntó: "¿Qué estás escribiendo?". Zheng Wei le mostró a Ruan Ruan lo que había hecho en la mañana. Con la cristalización de la sabiduría, Ruan Ruan lo miró, "El plan de acción detallado del cautivo Chen Xiaozheng ..." Después de que terminó de leer, se quedó sin palabras. Es un libro pequeño bastante nuevo. Se han escrito casi diez páginas de manera elocuente. Las impresiones pequeñas están escritas con pulcritud. Todos los enlaces y pasos están detallados. Los puntos clave y las precauciones están incluso subrayados.

Estrategia de acción 1: Encuentro con Chen Xiaozheng en el aula de autoaprendizaje. Zheng Wei se sentó detrás de él, fingiendo no saberlo, y le hizo una pregunta matemática: ¿Sabes cuántos factoriales hay en 520? Sin embargo, Chen Xiaozheng ignoró a Zheng Wei en absoluto. .

¿Conoce la respuesta a esta pregunta? Date prisa y piénsalo, si alguien viene a preguntarte algún día. . . . . .

Aporte

Una N por línea, 0 <= N <10 ^ 7, ¡debe responder rápidamente!

Producción

Imprima el número de dígitos del factorial de N.

Entrada de muestra

5
6
520

Salida de muestra

3
3
1189

idea

A primera vista, esta pregunta puede parecer que hay que hacer estallar la violencia. Una búsqueda en Internet resulta tener una fórmula ...
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Luego, configure la fórmula directamente ...

int str(int n)
{
    
    
     return floor(log10(sqrt(2*PI*n))+n*log10(n/e))+1;
}

Código AC

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pre(i,a,b) for(int i=a;i>=b;--i)
#define m(x) memset(x,0,sizeof x)
const double PI = acos(-1);
const double e = exp(double(1));
const int maxn = 1e6+5;
int str(int n)
{
    
    
    return floor(log10(sqrt(2*PI*n))+n*log10(n/e))+1;
}
int main()
{
    
    
    
    int n;
    while(~scanf("%d",&n))
    {
    
    
        if(n<=3)printf("1\n");
        else
        printf("%d\n",str(n));
    }
    return 0;
}


Supongo que te gusta

Origin blog.csdn.net/DAVID3A/article/details/115185233
Recomendado
Clasificación