社区讨论

沉迷高精无法自拔

学术版参与者 9已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mi7yaxd1
此快照首次捕获于
2025/11/21 05:36
4 个月前
此快照最后确认于
2025/11/21 06:42
4 个月前
查看原帖
求助
CPP
#include<bits/stdc++.h>
using namespace std;
const static long long blen=10000;
struct lint{
	typedef long long ll;
	vector<int>s;
	int V=1;
	ll w=0;
	
	lint operator +(lint &x){
		if(x.w>w) return x+*this;
	    lint tt;
	    ll i=w,tmp,x1,x2,j=w-x.w;
	    //if(V==-1&&x.V==1) return x-*this;
	    //if(V==1&&x.V==-1) return *this-x;
	    tt.s.push_back(0);
	    while(i>=0) {
	    	x1=w>i?s[i]:0;
	    	x2=x.w>i-j&&i-j>=0?x.s[i-j]:0;
	    	tt.s.push_back(x1+x2);
	    	i--;
		}
		i=w;
	    while(i>=0) {
	    	if(tt.s[i]>=10) tt.s[i-1]+=tt.s[i]/10,tt.s[i]%=10;
	    	i--;
		}
		tt.w=tt.s.size();
		return tt;
	}
	
	void write(){
		if(w==1&&s[0]==0||s.empty()) {
			putchar('0');
			return;
		}
		if(V==-1) putchar('-');
		long long i=w-1,F=0;
		while(s[i]==0&&i<w) i++;
		while(i>=0) {
			putchar(s[i]+'0');i--;
		}
		return;
	}
	int read() {
		char t;
		if((t=getchar())==EOF) return 0;
		s.clear();
		V=1;
		w=0;
		while(t&&(isdigit(t)||t=='-'||t=='+')) {
			if((t=='+'||t=='-')&&w!=0) break;
			if(t=='-') V*=-1;
			else w++,s.push_back(t-'0');
			t=getchar();
		}
		return t!=EOF;
	}
};
int main(void)
{
	lint a,b,c;
	a.read();
	b.read();
	(a+b).write();
	return 0;
}

回复

11 条回复,欢迎继续交流。

正在加载回复...