90分求助
  • 板块P1001 A+B Problem
  • 楼主Alex866
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/3/17 20:45
  • 上次更新2024/3/17 22:52:32
查看原帖
90分求助
1180206
Alex866楼主2024/3/17 20:45
#include<bits/stdc++.h>
using namespace std;
#define	MAXN 500
struct intt{
	int len,a[MAXN];
	intt(int n=0){
		memset(a,0,sizeof(a));
		int i;
		for(i=1;n;i++){
			a[i]=n%10;
			n/=10;
		}
		len=i-1;
	}
	int &operator[](int x){
		return a[x];
	}
	void jinwei(int l){
		len=l;
		for(int i=1;i<=len;i++){
			a[i+1]+=a[i]/10;
			a[i]%=10;
            if(a[i]<0){
                a[i+1]-=10;
                a[i]+=10;
            }
		}
		while(!a[len]){
			len--;
		}
	}
	void weihu(){
		jinwei(MAXN-1);
	}
	void out(){
		for(int i=max(len,1);i>=1;i--){
			printf("%d",a[i]);
		}
	}
};
int intadd(int a,int b){
	return a+b;
}
int intcut(int a,int b){
	return a-b;
}
bool operator>(intt a,intt b){
	a.weihu();
	b.weihu();
	if(a.len>b.len){
		return 1;
	}else if(a.len<b.len){
		return 0;
	}else{
		for(int i=a.len;i>0;i--){
			if(a[i]>b[i]){
				return 1;
			}else if(b[i]>a[i]){
				return 0;
			}
		}
	}
	return 1;
}
bool operator==(intt a,intt b){
	a.weihu();
	b.weihu();
	if(a.len!=b.len){
		return 0;
	}else{
		for(int i=a.len;i>0;i--){
			if(a[i]!=b[i]){
				return 0;
			}
		}
	}
	return 1;
}
bool operator<(intt a,intt b){
	return !(a==b||a>b);
}
intt operator+(intt a,intt b){
	intt c;
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++){
		c[i]+=a[i]+b[i];
	}
	c.jinwei(len+1);
	return c;
}
intt operator-(intt a,intt b){
	intt c;
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++){
		c[i]+=a[i]-b[i];
	}
	c.jinwei(len+1);
	return c;
}
intt operator*(intt a,intt b){
	intt c;
	int len=a.len+b.len;
	for(int i=1;i<=a.len;i++){
		for(int j=1;j<=b.len;j++){
			c[intadd(i,intcut(j,1))]=a[i]*b[j];
		}
	}
	c.jinwei(len+1);
	return c;
}
intt a=intt(0),b=intt(0),c=intt(0);
int x,y;
int main(){
    scanf("%d%d",&x,&y);
    a=intt(x)+intt(1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
    b=intt(y)+intt(1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
    c=a+b-intt(2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
    c.out();
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define	MAXN 500
struct intt{
	int len,a[MAXN];
	intt(int n=0){
		memset(a,0,sizeof(a));
		int i;
		for(i=1;n;i++){
			a[i]=n%10;
			n/=10;
		}
		len=i-1;
	}
	int &operator[](int x){
		return a[x];
	}
	void jinwei(int l){
		len=l;
		for(int i=1;i<=len;i++){
			a[i+1]+=a[i]/10;
			a[i]%=10;
		}
		while(!a[len]){
			len--;
		}
	}
	void weihu(){
		jinwei(MAXN-1);
	}
	void out(){
		for(int i=max(len,1);i>=1;i--){
			printf("%d",a[i]);
		}
	}
};
int intadd(int a,int b){
	return a+b;
}
int intcut(int a,int b){
	return a-b;
}
bool operator>(intt a,intt b){
	a.weihu();
	b.weihu();
	if(a.len>b.len){
		return 1;
	}else if(a.len<b.len){
		return 0;
	}else{
		for(int i=a.len;i>0;i--){
			if(a[i]>b[i]){
				return 1;
			}else if(b[i]>a[i]){
				return 0;
			}
		}
	}
	return 1;
}
bool operator==(intt a,intt b){
	a.weihu();
	b.weihu();
	if(a.len!=b.len){
		return 0;
	}else{
		for(int i=a.len;i>0;i--){
			if(a[i]!=b[i]){
				return 0;
			}
		}
	}
	return 1;
}
bool operator<(intt a,intt b){
	return !(a==b||a>b);
}
intt operator+(intt a,intt b){
	intt c;
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++){
		c[i]+=a[i]+b[i];
	}
	return c;
}
intt operator-(intt a,intt b){
	intt c;
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++){
		c[i]+=a[i]-b[i];
	}
	c.jinwei(len+1);
	return c;
}
intt operator*(intt a,intt b){
	intt c;
	int len=a.len+b.len;
	for(int i=1;i<=a.len;i++){
		for(int j=1;j<=b.len;j++){
			c[intadd(i,intcut(j,1))]=a[i]*b[j];
		}
	}
	c.jinwei(len+1);
	return c;
}
bool abss(int a,int b)
intt a=intt(0),b=intt(0),c=intt(0);
int x,y;
int main(){
    scanf("%d%d",&x,&y);
    a=intt(x)+intt(1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
    b=intt(y)+intt(1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
    c=a+b-intt(2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
    c.out();
	return 0;
}
2024/3/17 20:45
加载中...