结果填空:阶乘位数

结果填空:阶乘位数_第1张图片

思维||数学

#include
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<

你可能感兴趣的:(思维,思维)