1 :買三贈一
N個數的數組,求有多少個連續數和能被M整除
-
先把每個位置上的值先模上K,得到一個方便計算且加和後不會太大的數組
-
新建數組s,s[i] = sum(A[0]…A[i]),然後模K(s[i]範圍0-K)
-
如果A[i]+…+A[j]整除
- 也就是s[j]-s[i-1]==0
-
也就是s[i-1]和s[j]相等啊
- 我令s[-1]==0啊!
計算零出現:
計算1出現:
.
.
.
計算K-1出現:
- 將s數組化爲一個字典,記錄每個值出現的次數
- 設同一值出現的次數爲v
- 則能夠組合成的有效解個數爲v*(v-1)/2,
- 最後把所有的值的計算結果加起來即可。
中獎的號碼:0-9,最小的代價
- 至少k個連續
222 3 44
- 至少4個連續