题解 1882: 蓝桥杯2017年第八届真题-k倍区间

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

蓝桥杯2017年第八届真题-k倍区间 (C++代码)

摘要:        前缀和对 K 取模,统计答案的时候就是前面有多少个前缀和与该位置前缀和 % K 下相等,这样相减之后这些区间和 % K 下等于 0,也就是 K 的倍数了,我用分块来维护(数据结构学傻了……

前缀和+组合数+取余公式转换

解题思路:注意事项:(b-a)%k=(b%k-a%k)%k,因为两个余数一样的话,相减就是0啊!!!!!!!!!!所以任取余数相同的两个数参考代码:n,k=map(int,input().split())a=[0]sum=[0]*(n+10)cnt=0st=[0]*(n+10)foriinrange(

k倍区间 (Java代码)

摘要:import java.util.Scanner; public class Main {    public static void main(String []args){  ……

蓝桥杯2017年第八届真题-k倍区间

求前缀和a[],各自对K取模,若是a[i]==0,代表他自身就符合条件,ans++,这是答案的一部分;若取模后!=0,则将相同的模分类计数,在相同模的前缀中任意选两个位置相减即满足条件,所以另一部分答案为:在m个相同模的前缀和中能选出多少个两两组合(i

蓝桥杯2017年第八届真题-k倍区间-题解(C++代码)

思路:前缀和,用sum[i]表示前i项和,那么区间[l,r]的和就是sum[r]-sum[l-1],因为要是k的倍数,所以(sum[r]-sum[l-1])%k==0,整理一下就是sum[r]%k==sum[l-1]%k,所以统计让这个式子成立的项就好了。