首页 > 代码库 > 100726C
100726C
显而易见,我们要找子串,每次记录前缀和,算出余数,然后通过一个数组保存余数,答案就是加上之前余数的总和,要注意整除的情况
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int num[1000010]; int main() { int T;scanf("%d",&T); while(T--) { int ans=0,sum=0,n,d;memset(num,0,sizeof(num)); scanf("%d%d",&d,&n); for(int i=1;i<=n;i++) { int a;scanf("%d",&a); sum=(sum+a)%d; if(sum==0) ans++; ans+=num[sum]; num[sum]++; } printf("%d\n",ans); } return 0; }
100726C
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。