高精度加,减,乘
2024-11-01 17:36:24
发布于:北京
//高精度加法代码
#include <bits/stdc++.h>
using namespace std;
const int N=10001;
int a[N],b[N],c[N];
int main(){
string s1,s2;
cin>>s1>>s2;
int l1=s1.size(),l2=s2.size();
int len=max(l1,l2);
for(int i=0;i<l1;i++){
a[i]=s1[l1-i-1]-'0';
}
for(int i=0;i<l2;i++){
b[i]=s2[l2-i-1]-'0';
}
int l3=max(l1,l2);
for(int i=0;i<len;i++){
c[i]+=a[i]+b[i];
if(c[i]>=10){
c[i+1]=c[i]/10;
c[i]%=10;
}
}
if(c[l3]>0){
l3++;
}
for(int i=l3-1;i>=0;i--){
cout<<c[i];
}
return 0;
}
//高精度减法代码
#include <bits/stdc++.h>
using namespace std;
const int N=10001;
int a[N],b[N],c[N];
bool cmp(string s1,string s2){
if(s1.size()<s2.size()){
return true;
}else if(s1.size()>s2.size()){
return false;
}
return s1<s2;
}
int main(){
string s1,s2;
cin>>s1>>s2;
if(cmp(s1,s2)){
swap(s1,s2);
cout<<"-";
}
int l1=s1.size(),l2=s2.size();
int len=min(l1,l2);
for(int i=0;i<l1;i++){
a[i]=s1[l1-i-1]-'0';
}
for(int i=0;i<l2;i++){
b[i]=s2[l2-i-1]-'0';
}
int l3=l1;
for(int i=0;i<l3;i++){
if(a[i]<b[i]){
a[i]+=10;
a[i+1]--;
}
c[i]=a[i]-b[i];
}
while(l3>1 && c[l3-1]==0){
l3--;
}
for(int i=l3-1;i>=0;i--){
cout<<c[i];
}
return 0;
}
//高精度乘法代码
#include <bits/stdc++.h>
using namespace std;
const int N=2e3+9;
int a[N],b[N],c[N];
int main(){
string s1,s2;
cin>>s1>>s2;
int l1=s1.size(),l2=s2.size();
for(int i=0;i<l1;i++){
a[i]=s1[l1-i-1]-'0';
}
for(int i=0;i<l2;i++){
b[i]=s2[l2-i-1]-'0';
}
for(int i=0;i<l1;i++){
for(int j=0;j<l2;j++){
c[i+j]+=a[i]*b[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
}
int l3=l1+l2;
while(c[l3-1]==0 && l3>1){
l3--;
}
for(int i=l3-1;i>=0;i--){
cout<<c[i];
}
return 0;
}
//高精度乘低精度代码
#include <bits/stdc++.h>
using namespace std;
const int N=10001;
int a[N],b[N];
int main(){
string s;
int c;
cin>>s>>c;
int l1=s.size();
for(int i=0;i<l1;i++){
a[i]=s[l1-i-1]-'0';
}
for(int i=0;i<l1;i++){
b[i]+=a[i]*c;
if(b[i]>=10){
b[i+1]=b[i]/10;
b[i]%=10;
}
}
int l2=l1;
while(b[l2]>0){
b[l2+1]+=b[l2]/10;
b[l2]%=10;
l2++;
}
for(int i=l2-1;i>=0;i--){
cout<<b[i];
}
return 0;
}
全部评论 2
顶
2024-08-13 来自 北京
0顶
2024-08-13 来自 北京
0
有帮助,赞一个