- 高精度减法
题解
- 2025-7-8 17:42:02 @
#include<bits/stdc++.h>
using namespace std;
string minu(string a,string b){
int flag=0;
if (a.size() < b.size() || (a.size() == b.size() && a < b)){
flag=1;
swap(a,b);
}
int la=a.size(),lb=b.size(),f=0;
string ans;
while(la||lb||f){
int t=(la>0?a[--la]-'0':0)-(lb>0?b[--lb]-'0':0)-f;
f=0;
if(t<0){
t+=10;
f=1;
}
ans+=char(t+'0');
}
reverse(ans.begin(), ans.end());
while (ans[0]=='0'&&ans.size()>1) {
ans.erase(ans.begin());
}
if (flag) {
ans.insert(ans.begin(),'-');
}
return ans;
}
int main(){
string a,b;
cin>>a>>b;
cout<<minu(a,b)<<endl;
return 0;
}
2 条评论
-
-
#include<bits/stdc++.h> using namespace std; string div(string a, int b) { long long r = 0, la = a.size(); string ans; for (int i = 0; i < la; i++) { r = r * 10 + (a[i] - '0'); ans += (char)(r / b + '0'); r %= b; } while (ans[0] == '0' && ans.size() > 1) ans.erase(ans.begin()); return ans; } int main(){ string a; int b; cin>>a>>b; cout<<div(a,b)<<endl; return 0; }
-
#include<bits/stdc++.h> using namespace std; string mul(string a,string b){ int la=a.size(),lb=b.size(),r[4010]={0}; for(int i=0;i<la;i++){ for(int j=0;j<lb;j++){ r[i+j]+=(a[la-1-i]-'0')*(b[lb-1-j]-'0'); } } int l=la+lb; string ans; for(int i=0;i<l;i++){ r[i+1]+=r[i]/10; r[i]=r[i]%10; ans+=char(r[i]+'0'); } reverse(ans.begin(), ans.end()); while (ans[0]=='0'&&ans.size()>1) { ans.erase(ans.begin()); } return ans; } int main(){ string a,b; cin>>a>>b; cout<<mul(a,b)<<endl; return 0; }
- 1
信息
- ID
- 628
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 106
- 已通过
- 25
- 上传者