★高精度【模板】 加、减、乘、除

#include <bits/stdc++.h>
using namespace std;
int main() {
string a;
string b;
string c;
cin>>a>>b;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int carry=0;
for (int i=0;i<a.length()||i<b.length();i++) {
if(i<a.length()) carry+=a.at(i)-'0';
if(i<b.length()) carry+=b.at(i)-'0';
c+=to_string(carry%10);
carry/=10;
}
if (carry>0) c+=to_string(carry);
reverse(c.begin(),c.end());
cout<<c;
}

#include <bits/stdc++.h>
using namespace std;
bool compare(string a, string b) {
if (a.length()<b.length()) return true;
else if (a.length()>b.length()) return false;
else {
for (int i=a.length()-1;i>=0;i--) {
if (b.at(i)>a.at(i)) return true;
else return false;
}
}
return false;
}
int main() {
string a;
string b;
string c;
cin>>a>>b;
int flag=0;
if (compare(a,b)) {
flag=1;
}
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int cur=0;
for (int i=0;i<a.length()||i<b.length();i++) {
if (i<a.length()) cur+=a.at(i)-'0';
if (i<b.length()) cur-=b.at(i)-'0';
if (cur<0) {
c+=to_string(cur+=10);
cur=-1;
}
else {
c+=to_string(cur);
cur=0;
}
}
while (c.length()>1 && c.back()==0)
{
c.pop_back();
}
if (flag) c+='-';
reverse(c.begin(),c.end());
cout<<c;
}

#include <bits/stdc++.h>
using namespace std;
int main() {
string a;
string b;
cin>>a>>b;
vector<int> c(a.length()+b.length(),0);
if (a=="0"||b=="0") {
cout<<"0";
return 0;
}
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
for (int i=0;i<a.length();i++) {
for (int j=0;j<b.length();j++) {
c[i+j] += (a.at(i)-'0')*(b.at(j)-'0');
}
}
int carry=0;
for (int i=0;i<c.size();i++) {
c[i]+=carry;
carry=c[i]/10;
c[i]%=10;
}
int start=c.size()-1;
while (start>0&&c[start]==0) {
start--;
}
for (int i=start;i>=0;i--) {
cout<<c[i];
}
return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main() {
string a;
int b;
string c;
cin >> a >> b;
if (a == "0" || b == 0) {
cout << "0";
return 0;
}
// cur 要开 long long !
long long cur = 0;
for (int i = 0; i < a.length(); ++i) {
cur = cur * 10 + (a[i] - '0');
if (cur < b) {
c += '0';
} else {
c += (cur / b) + '0';
cur %= b;
}
}
int start = 0;
while (start < c.size() && c[start] == '0') {
start++;
}
// 如果结果全是 0,至少输出一个 0
if (start == c.size()) {
cout << "0";
} else {
for (int i = start; i < c.size(); ++i) {
cout << c[i];
}
}
return 0;
}
发布于   xiins  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示