警示后人——取模要及时
查看原帖
警示后人——取模要及时
925386
Hiris楼主2024/10/24 23:22

取模不当爆零

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+5;
int n,m,num[N],col[N],p=10007;
LL e[N],ans;
vector<int> a[2*N];
int main() {
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&num[i]);
	for(int i=1;i<=n;i++){
		scanf("%d",&col[i]);
		if(i&1)col[i]+=m;
		a[col[i]].push_back(i);
		e[col[i]]=(e[col[i]]+num[i]);
	}
	for(int i=1;i<=2*m;i++){
		int si=a[i].size();
		for(int j=0;j<si;j++){
			int aij=a[i][j];
			ans+=((((si-1)%p)*num[aij]%p)*aij+((e[col[aij]]-num[aij])%p*aij)%p)%p;
		//	printf("%d \n",e[col[aij]]-num[aij]);
		}
	}
	printf("%d\n",ans);
	return 0;
}

取模恰当AC

ans=(ans+((((si-1)%p)*num[aij]%p)*aij+((e[col[aij]]-num[aij])%p*aij)%p)%p)%p;

2024/10/24 23:22
加载中...