您的位置:首页 > 其它

求一个大数的位数

2017-04-08 21:36 92 查看
给一个数N,求N的阶乘的位数。

求一个大数的位数可以这样来求:

x*y的位数表示为log10(x*y)=log10(x)+log10(y)+1;

注意log10(m);这个函数的参数和返回值的类型都是double

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
while(N--)
{
int m;
double sum=0;
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
sum+=log10((double)i);
}
printf("%d\n",(int)sum+1);
}
}
return 0;

}


这个题目要注意其中的一些强制转换。没有的话程序会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: