hdu 3

来源:互联网 发布:凯立德找不到导航软件 编辑:程序博客网 时间:2024/05/29 08:31

题目意思是给一个数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.00000001int 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;}
0 0
原创粉丝点击