使用数组进行模拟,记录进位,最后得到的进位再压入到数组内。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>ans;
int x;
while(cin>>x)
{
ans.clear();
ans.push_back(1);
for(int i=2;i<=x;i++)
{
int dex=0;//进位
int carry=0;
for(int j=0;j<ans.size();j++)
{
int sum=ans[j]*i+dex;
ans[j]=sum%10;
dex=sum/10;
}
while(dex!=0)//还有进位。
{
ans.push_back(dex%10);
dex=dex/10;
}
}
cout<<"answer:"<<endl;
for(i=ans.size()-1;i>=0;i--)
cout<<ans[i];
cout<<endl;
}
return 0;
}