数学问题,用对数求解
log(a*b)=log(a)+log(b)
math.h中提供函数:
指数与对数
double frexp(double value,int *exp);这是一个将value值拆分成小数部分f和(以2为底的)指数部分exp,并返回小数部分f,即f*2^exp。其中f取值在0.5~1.0范围或者0。
double ldexp(double x,int exp);这个函数刚好跟上面那个frexp函数功能相反,它的返回值是x*2^exp
double modf(double value,double *iptr);拆分value值,返回它的小数部分,iptr指向整数部分。
double log (double); 以e为底的对数
double log10 (double);以10为底的对数
double pow(double x,double y);计算以x为底数的y次幂
float powf(float x,float y); 功能与pow一致,只是输入与输出皆为浮点数
double exp (double);求取自然数e的幂
double sqrt (double);开平方
#include<stdio.h>
#include<math.h>
int main()
{
int n,a;
double sum;
scanf("%d",&n);
int i=n;
while(i>0)
{
scanf("%d",&a);
sum=0.0;
for(int j=1;j<=a;j++)
sum+=log10((double)j);
printf("%d\n",(int)sum+1);
i--;
}
return 0;
}