#include <bits/stdc++.h>
using namespace std;
int a[1005],b[1005],c[200005],t;
string x,y;
void jiaf(){// 高精加
if(x.size()<y.size()){
swap(x,y);
}
a[0]=x.size();b[0]=y.size();
t=0;
for(int i=a[0]-1;i>=0;i--)a[++t]=x[i]-'0';
/*
for(int i=a[0];i>=1;i--){
printf("%d",a[i]);
}printf("\n");*/
t=0;
for(int i=b[0]-1;i>=0;i--)b[++t]=y[i]-'0';
/*for(int i=b[0];i>=1;i--){
printf("%d",b[i]);
}printf("\n");*/
t=a[0];
for(int i=1;i<=a[0];i++){
a[i]+=b[i];
if(a[i]>=10){
a[i+1]++;
a[i]-=10;
t=max(t,i+1);
}
}
for(int i=t;i>=1;i--){
printf("%d",a[i]);
}printf("\n");
}
void jianf(){//高精减
if(x.size()<y.size()){
swap(x,y);printf("-");
}
a[0]=x.size();b[0]=y.size();
t=0;
for(int i=a[0]-1;i>=0;i--)a[++t]=x[i]-'0';
t=0;
for(int i=b[0]-1;i>=0;i--)b[++t]=y[i]-'0';
t=a[0];
for(int i=1;i<=a[0];i++){
if(a[i]<b[i]){
a[i+1]--;
a[i]+=10;
if(i+1==a[0]&&!a[i+1])t=a[0]-1;
}
a[i]-=b[i];
}
for(int i=t;i>=1;i--){
printf("%d",a[i]);
}printf("\n");
}
void chengf(){//高精乘
if(x=="0"||y=="0"){
printf("0");return;
}
if(x.size()>y.size()){
swap(x,y);
}
a[0]=x.size();b[0]=y.size();
t=0;
for(int i=a[0]-1;i>=0;i--)a[++t]=x[i]-'0';
t=0;
for(int i=b[0]-1;i>=0;i--)b[++t]=y[i]-'0';
t=a[0]+b[0]-1;
for(int i=1;i<=a[0];i++){
if(a[i]==0)continue;
for(int j=1;j<=b[0];j++){
c[i+j-1]+=a[i]*b[j];
if(c[i+j-1]>=10){
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
if(i==a[0]&&j==b[0]){
t=a[0]+b[0];
}
}
}
/* for(int i=t;i>=1;i--){
printf("%d",c[i]);
}printf("\n");*/
}
for(int i=t;i>=1;i--){
printf("%d",c[i]);
}printf("\n");
}
int main(){
cin>>x>>y;
jiaf();
memset(a,0,sizeof(a));
memset(b,0,sizeof(a));
jianf();
memset(a,0,sizeof(a));
memset(b,0,sizeof(a));
chengf();
}/*
12345678900
98765432100
*/
高精加减乘
最新推荐文章于 2024-08-24 14:08:21 发布