今日普及培优班B题正解

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=50009;
int t;
signed main(){
	cin>>t;
	while(t--){
		int k,n;
		cin>>k>>n;
		int s[N];
		map<int,int> m;
		vector<int> v;
		for(int i=1;i<=n;i++){
			int temp;
			scanf("%lld",&temp);
			s[i]=(s[i-1]+temp)%k;
		}
		for(int i=0;i<=n;i++){
			if(m[s[i]]==0) v.push_back(s[i]); 
			m[s[i]]++;
		}
		int ans=0;
		for(int i=0;i<v.size();i++){
			int c=m[v[i]];
			ans+=c*(c-1)/2;
		}
		printf("%lld\n",ans);
	}
    return 0;
}

您是否可以写出您的思路

1 个赞

这句话有什么用啊?您也没用过long long啊

1 个赞