蓝桥 - 阶乘位数

题意:问你 n的阶乘 第一个超过10000位的n是多少。
因为 n!=n*(n-1) * (n-2)* ……*2 *1
然后如果求十进制下有多少位 即对10取对数然后+1
所以总的长度就是 log10(n)+log10(n-1)+log10(n-2)+……+log10(1)+1 注意最后这个+1很重要
所以代码如下:
all是长度

using namespace std;
int main() {
	int i=1;
    double all=0.0;
    while(1){
        all+=(log10(i));
        if((int)all+1>=10000) break;
        i++;
    }
    printf("%d\n",i);
	return 0;
}
发布了120 篇原创文章 · 获赞 12 · 访问量 5256

猜你喜欢

转载自blog.csdn.net/weixin_43735161/article/details/105174123