提交时间:2026-10-29 13:04:47
运行 ID: 43368
#include<bits/stdc++.h> using namespace std; #define int long long int n,p,a[1000005],ans; int sum[1000005],lst[1000005],last; signed main(){ cin>>n>>p; for(int i=1;i<=n;i++){cin>>a[i];a[i]=a[i]%p;} for(int i=1;i<=n;i++){sum[i]=sum[i-1]+a[i];sum[i]%=p;} memset(lst,-1,sizeof(lst)); lst[0]=0; for(int i=1;i<=n;i++){ if(lst[sum[i]]!=-1&&lst[sum[i]]>=last){ last=i; ans++; } lst[sum[i]]=i; } cout<<ans; return 0; } /* 思路: 1:划分成一段一段,使得更多的段的和可以被p整除 */