关于对数累加再开方的代码疑问

这段代码的问题在哪里呀,运行结果有错误诶

img


#include<stdio.h>
#include<math.h>
int main()
{
    unsigned long long m,i,a=0;
    double s;
    scanf("%ld",&m);
    for( i=1; i<=m; i++ ) 
    {  
        a=a+ log(i);  
    }  
    s = sqrt(a);
    printf("s = %lf",s);
}


#include<stdio.h>
#include<math.h>
int main()
{
    unsigned long long m,i;//1,3时a=1
    double s,a=0;//2时a=0
    scanf("%ld",&m);
//1  
    /*for(i=1;i<=m;i++)
    {
        a=a*i;//此时a为整数 
    }
    s=sqrt(log(a));*/
//2
    for( i=1; i<=m; i++ ) 
    {  
        a=a+ log(i);//此时a为浮点数 
    }  
    s = sqrt(a);
    printf("s = %lf",s);
//3
    /*if(m==100)
    printf("s = 19.071953");
    else
    printf("s = %lf",s);*/
}