本代码已经调了两天了!!,请大佬们帮忙看一下,非常感谢!!
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
//高静加法
string gao_jia(string a,string b){
string ans ="";
int na[505],nb[505];
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
int len1=a.size();
int len2=b.size();
int len=max(len1,len2);
for(int i=0;i<len1;i++){
na[len1-i-1]=a[i]-'0';
}
for(int i=0;i<len2;i++){
nb[len2-i-1]=b[i]-'0';
}
for(int i=0;i<len;i++){
na[i]+=nb[i];
na[i+1]+=na[i]/10;
na[i]%=10;
}
int i=len;
while(i>0&&na[i]==0) i--;
for(i;i>=0;i--){
ans+=char(na[i]+'0');
}
return ans;
}
//高精乘法
string gao_cheng_dan(string a,int b)
{
int na[505],len;
string ans="";
len = a.size();
for(int i=0;i<len;i++)
{
na[len-i-1] = a[i]-'0';
}
for(int i=0;i<len;i++)
{
na[i] *= b;
}
//统一处理进位
for(int i=0;i<len;i++)
{
na[i+1] += na[i]/10;
na[i] %= 10;
}
while(na[len])
{
na[len+1] = na[len]/10;
na[len] %= 10;
len++;
}
for(int i=len-1;i>=0;i--)
{
ans += char(na[i]+'0');
}
return ans;
}
int p;
string u="0";
int main(){
cin>>p;
while(p!=0){
string o="1";
for(int i=1;i<=p;i++){
o=gao_cheng_dan(o,i);
}
u=gao_jia(o,u);
p--;
}
cout<<u;
}