一份A+B代码无法过洛谷测评
  • 板块学术版
  • 楼主anaoai
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/10/18 22:13
  • 上次更新2023/11/4 03:20:22
查看原帖
一份A+B代码无法过洛谷测评
560814
anaoai楼主2021/10/18 22:13

声明:代码不是我的,但是我很疑惑,为什么在Windows条件下能正常运行无法过洛谷测评机

#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);
}
2021/10/18 22:13
加载中...