2 条题解
-
2
高精度 X 高精度
#include<bits/stdc++.h> #define ULL unsigned long long #define LL long long #define PII pair<int,int> using namespace std; const int N = 3 * 1e6 + 10,M = 2 * 1e3 + 10,inf = 0x3f3f3f3f; vector<int> sup_mul(vector<int> &a,vector<int> &b) { vector<int> t(500005); for(int i=0;i<b.size();i++) { for(int j=0;j<a.size();j++) { t[i+j] += a[j]*b[i]; } } for(int i=0;i<a.size()+b.size()-1;i++) { if(t[i] > 9) { t[i+1] += t[i]/10; t[i] %= 10; } } while(t.size()>1&&t.back()==0) t.pop_back(); return t; } int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); string a,b; cin>>a>>b; vector<int> 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'); auto c = sup_mul(A,B); for(int i=c.size()-1;i>=0;i--) cout<<c[i]; return 0; }
-
1
参考答案:
#include<iostream> #include<vector> #include<string> using namespace std; vector<int> mul(vector<int>& A, int b) { vector<int>C; long long t = 0; for (int i = 0; i < A.size() || t; ++i) { if (i < A.size())t += A[i] * b; C.push_back(t % 10); t /= 10; } while (C.size() > 1 && C.back() == 0) C.pop_back(); return C; } int main() { int b; string a; vector<int > A; cin >> a >> b; for (int i = a.size() - 1; i >= 0; --i) A.push_back(a[i] - '0'); vector<int>C = mul(A, b); for (int i = C.size() - 1; i >= 0; --i) cout << C[i]; return 0; }
- 1
信息
- ID
- 67
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 16
- 已通过
- 4
- 上传者