AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 商店
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

原文

作者: 作者的头像   wert_nzy ,  2022-08-06 08:24:35 ,  所有人可见 ,  阅读 12


2


''' // 高精 + 高精 #include <iostream> #include <vector> using namespace std; vector<int> add(vector<int> a, vector<int> b) { vector<int> c; int t = 0; for (int i = 0; i < a.size() || i < b.size(); i++) { if (i < a.size()) t += a[i]; if (i < b.size()) t += b[i]; c.push_back(t%10); t /= 10; } if (t) c.push_back(1); while (c.size() > 1 && !c.back()) c.pop_back(); return c; } int main () { 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'); vector <int> C = add(A, B); for (int i = C.size()-1; i >= 0; i--) printf("%d", C[i]); printf("\n"); return 0; } // 高精-高精 #include <iostream> #include <vector> using namespace std; bool cmp(vector<int> a, vector<int> b) { if (a.size() != b.size()) return a.size() > b.size(); for (int i = a.size()-1; i >= 0; i--) { if (a[i] != b[i]) return a[i] > b[i]; } return true; } vector <int> sub(vector<int> a, vector<int> b) { vector <int> c; for (int i = 0, t = 0; i < a.size(); i++) { t = a[i]-t; if (i < b.size()) t -= b[i]; c.push_back((t+10)%10); if (t < 0) t = 1; else t = 0; } while (c.size() > 1 && c.back() == 0) c.pop_back(); return c; } int main () { 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'); if (cmp(A, B)) { vector<int> C = sub(A, B); for (int i = C.size()-1; i >= 0; i--) printf("%d", C[i]); } else { vector<int> C = sub(B, A); printf("-"); for (int i = C.size()-1; i >= 0; i--) printf("%d", C[i]); } return 0; } // 高精 * 低精 #include <iostream> #include <vector> using namespace std; vector <int> mul(vector<int> a, int b) { vector <int> c; for (int i = 0, t = 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()) c.pop_back(); return c; } int main () { string a; cin >> a; int B; cin >> B; vector <int> A, C; for (int i = a.size()-1; i >= 0; i--) A.push_back(a[i]-'0'); C = mul(A, B); for (int i = C.size()-1; i >= 0; i--) printf("%d", C[i]); return 0; } // 高精*高精 #include <iostream> #include <cmath> #include <vector> using namespace std; bool cmp(vector<int> a, vector<int> b) { return a.size() >= b.size(); } vector <int> mul(vector<int> a, vector<int> b) { vector<int> c; for (int i = 1; i <= a.size()+b.size(); i++) c.push_back(0); for (int i = 0; i < b.size(); i++) { for (int j = 0, k = i; j < a.size(); j++, k++) { c[k] += a[j]*b[i]; c[k+1] += c[k]/10; c[k] %=10; } } while (c.size() > 1 && !c.back()) c.pop_back(); return c; } int main () { string a, b; cin >> a >> b; vector <int> A, B, C; 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'); if (cmp(A, B)) C = mul(A, B); else C = mul(B, A); for (int i = C.size()-1; i >= 0; i--) printf("%d", C[i]); return 0; } // 高精/低精 #include <iostream> #include <vector> #include <algorithm> using namespace std; vector <int> div(vector<int> a, int b) { vector <int> c; for (int i = 0, t = 0; i < a.size(); i++) { t = t*10+a[i]; c.push_back(t/b); t %= b; } reverse(c.begin(), c.end()); while (c.size() > 1 && !c.back()) c.pop_back(); return c; } int main () { string a; int b; cin >> a >> b; vector <int> A, C; for (int i = 0; i < a.size(); i++) A.push_back(a[i]-'0'); C = div(A, b); for (int i = C.size()-1; i >= 0; i--) printf("%d", C[i]); return 0; }
'''

0 评论

你确定删除吗?
1024
x

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息