程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-C++高精度乘法求改錯。。

c-C++高精度乘法求改錯。。

編輯:編程綜合問答
C++高精度乘法求改錯。。

寫了好久的高精度乘法
就是一直錯,求改錯(不要其他高精乘代碼復制過來)

比較逗的事情是,我的這個代碼拿去交高精乘Wrong answer
直接拿去交高精加就AC了。。

#include
#define len 20000
using namespace std;

string s1,s2;

void init()
{
getline(cin,s1);
getline(cin,s2);

}

string add(string sx,string sy)
{
int a[len+1],b[len+1],ans[len+1];
for(int i=0;i a[s1.length()-i]=s1[i]-'0';
}
for(int i=0;i b[s2.length()-i]=s2[i]-'0';
}
int tp=0;int tail=max(s1.length(),s2.length());
for(int i=0;i ans[i]=(a[i]+b[i]+tp)%10;
tp=(a[i]+b[i]+tp)/10;
}
if(tp==1){
ans[max(s1.length(),s2.length())+1]=1;
tail++;
}
string answer;
char temp;
for(int i=tail;i>=1;i--){
temp=ans[i]+'0';
answer=answer+temp;
}
return answer;
}

string mul(string sx,string sy)
{
string used="0";
int a[len+1],b[len+1],c[len+1];
for(int i=0;i a[s1.length()-i]=s1[i]-'0';
}
for(int i=0;i b[s2.length()-i]=s2[i]-'0';
}
int tp=0;
for(int i=0;i for(int j=0;j c[j]=(a[i]*b[j]+tp)%10;
tp=(a[i]*b[j]+tp)/10;
}
int tail=s2.length()-1;
if(tp!=0){
c[s2.length()]=tp;
tail++;
}
string answer="";
char temp;
for(int k=tail;k>=0;k--){
temp=c[k]+'0';
answer+=temp;
}

    used=add(answer,used);      
}
return used;

}

int main()
{
init();
cout<<mul(s1,s2);

return 0;

}

最佳回答:


要用代碼格式貼。這樣顯示出來的代碼根本不完整。
還有出了什麼錯誤也描述一下啊。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved