思维||数学
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e5+5,tt=1000000;
int a[N],b[N];
int dd(ll x)
{
int s=0;
while(x)
{
s++;
x/=10;
}
return s;
}
int main()
{
ios::sync_with_stdio(false);
ll n;
n=1;
int s=1;//记录阶乘的位数
for(int i=1;;i++)
{
while(n>tt) n/=10;//一个数乘以另一个数,如果判断结果增加的位数,只乘以前几位(大于要乘以的数)就行,
int x=dd(n); //计算(i-1)!的位数
n=n*i;
int y=dd(n);//计算 i! 的位数
s=s+y-x;//加上增加的位数
if(s>=10000)
{
cout<<i; return 0;
}
// printf("%d %lld %d\n",i,n,s);
}
// cout<<s;
}