蓝桥阶乘高精度
思路:
1.先将各位先乘以对应的乘数
2.再遍历数组的每个位,取个位数,再将剩下的位数加到前面一个地方去,特别是最后那个z+1>pos,pos++,神来之笔
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[100]={0};
int pos=0;
a[pos]=1;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=pos;j++)
{
a[j]*=i;
}
for(int z=0;z<=pos;z++)
{
if(a[z]>=10)
{
a[z+1]+=a[z]/10;
a[z]%=10;
if(z+1>pos)
{
pos++;
}
}
}
}
for(int x=pos;x>=0;x--)
{
cout<<a[x];
}
}