历届试题 k倍区间

    xiaoxiao2022-07-07  207

     

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll; int main() { ll n, k; cin >> n >> k; ll sum[n+5], a[n+5], num[n+5]; memset(sum, 0, sizeof(sum)); memset(num, 0, sizeof(num)); // num[0] = 1; for(int i=1; i<=n; i++){ cin >> a[i]; sum[i] = (sum[i-1]+a[i])%k; num[sum[i]]++;//余数相同的个数 } ll Sum = 0; for(int i=0; i<k; i++){//任选两个余数相同的区间和也可整除 Sum += (num[i]-1)*num[i]/2; } cout << Sum+num[0] << endl; //模除为0的也可以单选 return 0; }

     

    最新回复(0)