| #include<iostream> #include<vector> #include<cmath> using namespace std; //2333串 高精度乘高精度 const int N = 1e6+10; int end; int C[N]; void mul(vector<int> &A,vector<int> &B) { for(int i=0;i<A.size();i++) { for(int j=0;j<B.size();j++) { C[i+j]+=A[i]*B[j]; C[i+j+1]+=C[i+j]/10; C[i+j]%=10; } } int end=A.size()+B.size()+1; while(end>0&&C[end]==0) end--; } int main() { int end; int n; cin>>n; while(n--) { string a,b; vector<int> A,B; cin>>a>>b; for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0'); for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0'); end=a.size()+b.size()-2; mul(A,B); for(int i=end;i>=0;i--) printf("%d",C[i]); printf("\n"); for(int i=end;i>=0;i--) C[i]=0; } } |
全部评论
(0) 回帖