为什么本地跑没事洛谷上WA?
查看原帖
为什么本地跑没事洛谷上WA?
357641
YyuanDa楼主2020/11/7 09:26
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=1000;
struct BigNum{
	int num[M+10],len;
	//初始化 
	void clean(){
		memset(num,0,sizeof(num));
		len=1;
	}
	void read(){
		char str[M+10];
		scanf("%s",str);
		len=strlen(str);
		for(int i=1;i<=len;i++) num[i]=str[len-i]-'0';
	}
	void print(){
		for(int i=len;i>=1;i--) printf("%d",num[i]);
		cout<<endl;
	}
	void itoBig(int x){
		clean();
		while(x!=0){
			num[len++]=x%10;
			x/=10;
		}
		if(len!=1) len--;
	}
	//比较符 
	bool operator <(const BigNum &tmp) const {
		if(len!=tmp.len) return len<tmp.len;
		for(int i=len;i>=1;i--) if(num[i]!=tmp.num[i])
			return num[i]<tmp.num[i];
		return false;
	}
	bool operator >(const BigNum &tmp) const{return tmp<*this;}
	bool operator <=(const BigNum &tmp) const{return !(tmp>*this);}
	bool operator >=(const BigNum &tmp) const{return !(tmp<*this);}
	bool operator ==(const BigNum &tmp) const{return !(tmp>*this||*this>tmp);}
	bool operator !=(const BigNum &tmp) const{return tmp>*this||*this>tmp;}	
	//运算符 
	BigNum operator + (const BigNum &A) const {
		BigNum S;
		S.clean();
		S.len=max(len,A.len);
		for(int i=1;i<=S.len;i++){
			S.num[i]+=num[i]+A.num[i];
			if(S.num[i]>=10){
				S.num[i]-=10;
				S.num[i+1]++;
			}
		}
	//	cout<<"WTF"<<S.len<<endl;
		while(S.num[S.len+1]) S.len++;
		return S;
	}
	
};
int main(){
	BigNum a,b;
	a.read();
	b.read();
	BigNum ans=a+b;
	ans.print();
	return 0;
}
2020/11/7 09:26
加载中...