ZCMU1907 k倍區間(字首和)

2021-08-28 05:29:15 字數 805 閱讀 3214

題目鏈結

time limit: 1 sec  memory limit: 128 mb

submit: 146  solved: 44

[submit][status][web board]

給定乙個長度為n的數列,a1, a2, ... an,如果其中一段連續的子串行ai, ai+1, ... aj(i <= j)之和是k的倍數,我們就稱這個區間[i, j]是k倍區間。

你能求出數列中總共有多少個k倍區間嗎?

每個資料報含多組輸入資料

第一行包含兩個整數n和k。(1 <= n, k <= 100000)

以下n行每行包含乙個整數ai。(1 <= ai <= 100000)

輸出乙個整數,代表k倍區間的數目。

5 2【解題思路】

記sum(i,j)為a[i]...a[j]的和,那麼要計算sum(i,j)%k=0的區間個數,即計算(sum(1,j)-sum(1,i-1))%k=0的區間個數。即判斷sum(1,j)%k=sum(1,i-1)%k,所以只要兩個字首和相等,則這段區間為k倍區間。但是需要注意的是最終答案需要加上num[0]。

【**】

#includeusing namespace std;

const int maxn=1e5+5;

int a[maxn],f[maxn],num[maxn];

int main()

//printf("%d\n",ans);

printf("%d\n",ans+num[0]);

}return 0;

}

K倍區間 字首和

第二天叫醒我的不是鬧鐘,是夢想!題目描述 給定乙個長度為n的數列,a1,a2,an,如果其中一段連續的子串行ai,ai 1,aj i j 之和是k的倍數,我們就稱這個區間 i,j 是k倍區間。你能求出數列中總共有多少個k倍區間嗎?輸入 第一行包含兩個整數n和k。1 n,k 100000 以下n行每行...

k倍區間(字首和)

題目如下 解題思路 這個思路實在太強了 1.sum i 代表a 0 a i 1 的和,那麼sum r sum l 1 即為區間 l,r 之間的和,即求 sum r sum l 1 k 0,即求sum r k sum l 1 k 即先求出字首和。在求出字首和的同時 k。2.有的人可能對 的最後一段不太...

k倍區間 字首和

問題描述 給定乙個長度為n的數列,a1,a2,an,如果其中一段連續的 子串行ai,ai 1,aj i j 之和是k的倍數,我們就稱這個 區間 i,j 是k倍區間。你能求出數列中總共有多少個k倍區間嗎?輸入格式 第一行包含兩個整數n和k。1 n,k 100000 以下n行每行包含乙個整數ai。1 a...