思维|结果填空(阶乘位数)

思维|结果填空(阶乘位数)
文章图片

思维||数学

#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<
【思维|结果填空(阶乘位数)】

    推荐阅读