计算出第一个正整数n的阶乘位数大于等于 10000的数是多少,
即求最小的正整数 n满足 n! 的位数大于等于 10000
知识点:某数 m 的位数可以由 log10(n)+1 取得
#include <cstdio> #include <string.h> #include <iostream> #include <algorithm> #include <math.h> using namespace std; const int inf=0x7fffffff; const long long mod=1e9+7; long long n; long long ans,mx=-inf; int main() { double x=0; for(int i=1;;i++){ x+=log10(i); //log10[n*(n-1)*(n-2)*...*2*1]=log10(n)+log10(n-1)+...+log10(2)+log10(1) if(x>=9999){ //这里之所以不是10000,是因为log10(n!)求得的值是n!的位数减 1 ,我们需要的是n!位数>=10000,即 log10(n!)+1>=10000 cout<<i; break; } } return 0; }