思路:n! = n * (n-1) * (n-2) * ... * 3 * 2 *1
要求其位数,可以求它以10为底的对数再向上取整
源代码:
#include
#include
#include
int main (int argc, char *argv[])
{
int i, n;
double sum;
sum = 0.0;
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
sum += log10(i);
}
printf ("%d\n", (int)ceil(sum));
return EXIT_SUCCESS;
}
运行结果:
$ ./calc
3
1
$ ./calc
4
2
$ ./calc
5
3
$ ./calc
6
3
$ ./calc
8
5
#include
#include
void main()
{int i,n,d;
double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{ if(i
else
d=(int)(s+log10(2))+1;}
printf("%d\n",d);}