社区讨论

新人求助,A+B那题,本机AC提交WA

P1001A+B Problem参与者 11已保存回复 19

讨论操作

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

当前回复
19 条
当前快照
1 份
快照标识符
@mi86g3f8
此快照首次捕获于
2025/11/21 09:24
4 个月前
此快照最后确认于
2025/11/21 09:53
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define N 305
using namespace std;

struct edge {
	int from,to,_next;
} e[N*N];
int size,head[N];
void add(int from,int to) {
	e[++size].from=from;
	e[size].to=to;
	e[size]._next=head[from];
	head[from]=size;
}

struct point {
	public:
		int a[N*2+5],k,len;
		friend point operator + (point a,point b) {
			point ans;
			memset(ans.a,0,sizeof(ans.a));
			if(a.k<b.k)swap(a,b);
			ans.k=a.k;
			for(int i=0;i<N;i++)
				ans.a[i]+=a.a[i];
			for(int i=0;i<N;i++)
				ans.a[i+a.k-b.k]+=b.a[i];
			for(int i=0;i<=N;i++)
			if(ans.a[i]>=10)ans.a[i]-=10,ans.a[i+1]++;
			return ans;
		}

} f[N+5][N+5];
void print(point r) {
	int trp=0,pr=0;
	for(int i=N-5; ~i; i--) {
		if(i==r.k-1) {
			if(trp==0)printf("0"),pr=1;
			printf("."),trp=1;
		}
		if(trp||r.a[i])printf("%d",r.a[i]),trp=1,pr=1;
	}
	if(!pr)printf("0");
	if(r.k<0&&trp)for(int i=-1; i>=r.k; i--)printf("0");
}
void get(point &r){
	char c,i=0;
	while((c=getchar())!='.'&&c!='\n'&&c!=' ')
		r.a[i++]=c-'0';
	if(c=='\n'||c==' '){
	for(int k=0;k<i/2;k++)
		swap(r.a[k],r.a[i-k-1]);return ;}
	int j=i;
	while((c=getchar())!='.'&&c!='\n'&&c!=' ')
		r.a[i++]=c-'0';
	r.k=i-j;
	
}
point a,b;
int main() {
	get(a),get(b);
	print(a+b);
}
一般来说Windows和Linux下结果不同的原因是什么啊
输入1 2,本地输出3,但评测机上输出2

回复

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

正在加载回复...