解题思路:
注意事项:(b-a)%k=(b%k-a%k)%k,因为两个余数一样的话,相减就是0啊!!!!!!!!!!所以任取余数相同的两个数
参考代码:
n,k=map(int,input().split())
a=[0]
sum=[0]*(n+10)
cnt=0
st=[0]*(n+10)
for i in range(n):
a.append(int(input()))
for i in range(1,n+1):
sum[i]=sum[i-1]+a[i]
st[sum[i]%k]+=1
for i in range(0,k):
cnt+=st[i]*(st[i]-1)//2#Cn2任取两个余数
print(cnt+st[0])#因为st[0]本身的元素也是一个k倍区间
0.0分
0 人评分
一个简单易懂的代码浏览:1162 |
C二级辅导-进制转换 (C语言代码)浏览:662 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1026 |
求最大公约数-模板题浏览:874 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:629 |
C语言程序设计教程(第三版)课后习题5.4 (C++代码)按照惯例的只有一行核心代码浏览:959 |
A+B for Input-Output Practice (V) (C语言代码)浏览:449 |
聪明的美食家 (C语言代码)浏览:1252 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:598 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:443 |