bjyb


私信TA

用户名:dotcpp0610982

访问量:1950

签 名:

等  级
排  名 2084
经  验 2481
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:
计算前缀和后取余,余数一致即相差k倍.
注意事项:
c++注意开long long,注意从0开始。
参考代码:

#include<bits/stdc++.h>
using namespace std;
#define maxx 300000
#define int long long
int all[maxx];
int M[maxx];
int ans;
signed main()
{
  cin>>n>>k;
  for(int i=1;i<=n;++i) cin>>all[i];
  for(int i=1;i<=n;++i) all[i]+=all[i-1];
  for(int i=1;i<=n;++i) all[i]=all[i]%k;
  for(int i=0;i<=n;++i) ++M[all[i]];
  for(int i=0;i<=n;++i)
  {
    --M[all[i]];
    ans+=M[all[i]];
  }
  cout<<ans;
}


 

0.0分

1 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »