您的位置:首页 > 其它

hdu 3

2016-01-27 01:02 260 查看
题目意思是给一个数n,求n的阶乘一共有多少位,鉴于n的阶乘可能是一个大数,而且模拟乘法的过程非常麻烦,可以选择取10为底的对数:n!的位数 = log10 n!+1 = log10 (2) + log10(3) +…… log10(n) + 1 。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <vector>
#include <stack>
#include <cstdlib>
#include <queue>
#include <set>
#include <cctype>
using namespace std;
#define  loop(i,u,v) for(int i = u;i <= v;i++)
#define rloop(i,u,v) for(int i = u;i >= v;i--)
#define eps  0.00000001

int jiecheng(int a)
{
int n = 1;
loop(i,2,a)
n *= i;
return n;
}

int main()
{
int n,m;
double a;

cin >> n;
while(n--)
{
cin >> m;
a = 0;
loop(i,2,m)
a += log10(i);
cout << int(a) + 1 << endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: