大数乘法和大数加法,
按照乘法和加法的运算对字符串进行运算就可以了,可以把代码记下来当成板子用。
这样下次写时候直接用就行了。

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
//大数加法
string addString(string a,string b)
{
    int carry=0;
    string res;
    int i=a.size()-1;
    int j=b.size()-1;
    while(i>=0 && j>=0)
    {
        int num=carry+a[i]-'0'+b[j]-'0';
        res+=num%10+'0';
        carry=num/10;
        i--;j--;    
    }
    while(i>=0)
    {
        int num=carry+a[i]-'0';
        res+=num%10+'0';
        carry=num/10;
        i--;
    }
    while(j>=0)
    {
        int num=carry+b[j]-'0';
        res+=num%10+'0';
        carry=num/10;
        j--;
    }    
    if(carry>0)
        res+=to_string(carry);
    reverse(res.begin(),res.end());
    return res;
} 
//大数乘法(x<=10)
string mulString(string a,int x)
{
    int carry=0;
    string res;
    for(int i=a.size()-1;i>=0;i--)
    {
        int num=carry+(a[i]-'0')*x;
        res+=num%10+'0';
        carry=num/10;
    }
    if(carry>0)
        res+=to_string(carry);
    reverse(res.begin(),res.end());
    return res;
} 
//组合大数乘法
string MulString(string a,string b) 
{
    string res;
    for(int i=0;i<b.size();i++)
    {
        int x=b[b.size()-1-i]-'0';
        string num=mulString(a,x);
        for(int j=0;j<i;j++)
            num=mulString(num,10);
        res=addString(res,num);
    }
    return res;
}
int main()
{
    int n;
    while(cin>>n)
    {
        string res="1";
        for(int i=2;i<=n;i++)
        {
            res=MulString(res,to_string(i));
        }
        cout<<res<<endl;
    }
    return 0;
}