先放我的原程序
#include<stdio.h>
const long long MAX=1e9+7;
long long n,times[5003],max,ans;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
int remain=0;
scanf("%d",&remain);
times[remain]++;
if(i==0){
max=remain;
}
else{
max=max>remain?max:remain;
}
}
for(int i=2;i<=max;i++){//边长
if(times[i]>=2){
long long remain1=times[i]*(times[i]-1)/2%MAX;
for(int j=1;j<=i/2;j++){
if(times[j]&×[i-j]){
if(j==i-j&×[j]>=2){
ans=(ans+remain1*times[j]*(times[j]-1)/2)%MAX;
}
else if(j!=i-j){
ans=(ans+remain1*times[j]*times[i-j])%MAX;
}
}
}
}
}
printf("%lld",ans);
return 0;
}
我刚写完提交发现前三个wa了,然后下载了第一个测试点的数据,第一个点的标准输出是77172185,我的本地dev输出是77172415,洛谷在线ide的输出是77172185,我真的不知道为什么,但是我之前在需要取模的题上好像遇到了类似情况,我怀疑是取模前溢出了,但是没有找到哪个地方,各位大佬可以帮我看看吗,十分感谢!