高精度模板(+、-)加减

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
char a[205],b[205];
int c[205],d[205];int ans[205]={0};
int n,m;
bool bj(){                      //判断 
if(m>n)     return false;
if(m<n)     return true;
for(int i=n;i>=1;i--){
if(c[i]<d[i]){
return false;
}
}
return true;
}
int init(){                     //转换 
c[0]=n;
for(int i=1;i<=n;i++){
c[i]=a[n-i]-'0';
}
while(c[c[0]]==0){
c[0]--;
}
d[0]=m;
for(int i=1;i<=m;i++){
d[i]=b[m-i]-'0';
}
while(d[d[0]]==0){
d[0]--;
}
return 0;
}
int jia(){                          //加法 
int k;
k=max(c[0],d[0]);
int t=0;
for(int i=1;i<=k;i++){
ans[i]=(c[i]+d[i]+t);
t=ans[i]/10;
ans[i]%=10;
}
ans[0]=k;
while(t!=0){
ans[0]++;
ans[ans[0]]+=t;
t=ans[ans[0]]/10;
ans[ans[0]]%=10;
}
return 0;
}
int jian(){                            //减法 
int x1,x2;
if(bj){
for(int i=1;i<=c[0];i++){
if(c[i]<=d[i]){
c[i]+=10;
c[i+1]--;
}
c[i]-=d[i];
}
}
if(!bj){
for(int i=1;i<=c[0];i++){
if(d[i]<=c[i]){
d[i]+=10;
d[i+1]--;
}
d[i]-=c[i];
}
}
return 0;
}
int main(){
scanf("%s=1",a);
scanf("%s=1",b);
n=strlen(a);
m=strlen(b);
init();
for(int i=ans[0];i>=1;i--){
printf("%d",ans[i]);
}
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值