#include<cstdio>
using namespace std;
int t,n,a[100005];
long long tmp,b;
void solve(){
scanf("%d",&n);tmp=0;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
scanf("%d",&b);
b-=tmp;
tmp=b-a[i];
}
if(tmp) printf("No\n");
else printf("Yes\n");
}
int main(){
scanf("%d",&t);
while(t--) solve();
return 0;
}
如题,以上代码会 挂8分 ,
然而将 a 数组改为 long long 类型,并将 b 输入时的格式控制符改为正确的"%lld"
即可 AC ,但是:
1≤ai,bi≤109。
显然 a,b 输入时均不会超出 int 范围,求上述玄学错误的原因。
以及赛时我感觉这个做法是对的(我也不好描述),试了一下就过了,所以求证该做法的正确性。