求助,改了%的位置之后一种能AC一种测试点3WA,不知道为什么
查看原帖
求助,改了%的位置之后一种能AC一种测试点3WA,不知道为什么
830594
HLQ12楼主2024/2/26 12:09

数据全都开long long了,前缀和没有及时%k应该也不会溢出才对,整蒙圈了

ll C2(ll x){//排列组合
	return x*(x-1)/2;
}
//第一种(可以AC): 
	for(int i = 1; i <= n; i++){
		cin>>a[i];
      //区别就是下面这行这个%k
		p[i] = (p[i-1]+a[i])%k;
	}
	ll ans = 0;
	for(int i = 0; i <= n; i++){
		bkt[p[i]]++;
	}
	for(int i = 0; i <= n; i++){
		ans += C2(bkt[i]);
	}
   //第二种(WA3): 
	for(int i = 1; i <= n; i++){
		cin>>a[i];
		p[i] = p[i-1]+a[i];
	}
	for(int i = 0; i <= n; i++){
     	//第二种的%k在这
		p[i]%=k;
		bkt[p[i]]++;
	}
	ll ans = 0;
	for(int i = 0; i <= n; i++){
		ans += C2(bkt[i]);
	}
2024/2/26 12:09
加载中...