社区讨论
新人求助,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 条回复,欢迎继续交流。
正在加载回复...