3531 判斷整除(2 6基本演算法之動態規劃)

2021-08-10 15:57:19 字數 1115 閱讀 2535

總時間限制: 1000ms 記憶體限制: 65536kb

描述 乙個給定的正整數序列,在每個數之前都插入+號或-號後計算它們的和。比如序列:1、2、4共有8種可能的序列:

(+1) + (+2) + (+4) = 7

(+1) + (+2) + (-4) = -1

(+1) + (-2) + (+4) = 3

(+1) + (-2) + (-4) = -5

(-1) + (+2) + (+4) = 5

(-1) + (+2) + (-4) = -3

(-1) + (-2) + (+4) = 1

(-1) + (-2) + (-4) = -7

所有結果中至少有乙個可被整數k整除,我們則稱此正整數序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、-3、-6、-9……都可以認為是3的倍數。

輸入 輸入的第一行包含兩個數:n(2 < n < 10000)和k(2 < k< 100),其中n代表一共有n個數,k代表被除數。第二行給出序列中的n個整數,這些整數的取值範圍都0到10000之間(可能重複)。

輸出 如果此正整數序列可被k整除,則輸出yes,否則輸出no。(注意:都是大寫字母)

樣例輸入

3 2

1 2 4

樣例輸出

no首先感謝zls耐心教我dp基礎題,可能太笨好久才明白。

思路:dp[i][j]表示考慮到了第i個數,前i個數的和mod k 是j。

狀態轉移方程則為:

if(dp[i-1][(j-a[i]+k)%k]==1||dp[i-1][(j+a[i]+k)%k]==1)

dp[i][j]=1;

#include 

#include

int n,k;

int a[100010];

int dp[10010][210];

int main()

}if(dp[n][0]==1)

printf("yes\n");

else

printf("no\n");

return

0;}

3531 判斷整除

3531 判斷整除 總時間限制 1000ms 記憶體限制 65536kb 描述 乙個給定的正整數序列,在每個數之前都插入 號或 號後計算它們的和。比如序列 1 2 4共有8種可能的序列 1 2 4 7 1 2 4 1 1 2 4 3 1 2 4 5 1 2 4 5 1 2 4 3 1 2 4 1 1...

OpenJudge 3531 判斷整除

總時間限制 1000ms 記憶體限制 65536kb 描述 乙個給定的正整數序列,在每個數之前都插入 號或 號後計算它們的和。比如序列 1 2 4共有8種可能的序列 1 2 4 7 1 2 4 1 1 2 4 3 1 2 4 5 1 2 4 5 1 2 4 3 1 2 4 1 1 2 4 7 所有結...

STL演算法之判斷式

轉接自stl演算法 1.equal v1.beg,v1.end,v2.beg,perd 判斷v1區間是否所有元素與v2子區間對應滿足謂詞perd 2.is permutation v1.beg,v1.end,v2.beg,perd 判斷v1區間是否任何元素都能在v2子區間找到滿足謂詞perd 3.m...