-
C++
信奥1330-高精度算法
-
mrhowe
SU
@
2024-4-6 14:57:26
#include<bits/stdc++.h>
using namespace std;
char a[110],b[110];
int A[110],len_a,B[110],len_b,C[110];
int main(){
cin>>a;
cin>>b;
len_a = strlen(a);
len_b = strlen(b);
for(int i=1;i<=len_a;i++)A[i]=a[len_a-i]-'0';
for(int i=1;i<=len_b;i++)B[i]=b[len_b-i]-'0';
int tmp=0,i;
for(i=1;i<=len_a||i<=len_b;i++){
C[i]=(A[i]+B[i]+tmp)%10;
tmp=(A[i]+B[i]+tmp)/10;
}
if(tmp>0)C[i]=tmp;
else i--;
for(int j=i;j>=1;j--)cout<<C[j];
return 0;
}
#include<bits/stdc++.h>
using namespace std;
char a[110],b[110];
int A[110],len_a,B[110],len_b,C[110];
int main(){
cin>>a;
cin>>b;
len_a = strlen(a);
len_b = strlen(b);
if(len_a<len_b||(len_a==len_b&&strcmp(a,b)==-1)){
cout<<"-";
for(int i=1;i<=len_a;i++)B[i]=a[len_a-i]-'0';
for(int i=1;i<=len_b;i++)A[i]=b[len_b-i]-'0';
swap(len_b,len_a);
}else if(len_a==len_b&&strcmp(a,b)==0){
cout<<0;
return 0;
}else{
for(int i=1;i<=len_a;i++)A[i]=a[len_a-i]-'0';
for(int i=1;i<=len_b;i++)B[i]=b[len_b-i]-'0';
}
int tmp=0,i,cc;
for(i=1;i<=len_a||i<=len_b;i++){
cc= A[i]-B[i]-tmp;
if(cc<0){
C[i]=cc+10;
tmp = 1;
}else{
C[i]=cc;
tmp = 0;
}
// cout<<C[i]<<endl;
}
while(C[i]==0)i--;
for(int j=i;j>=1;j--)cout<<C[j];
return 0;
}