DP 添加正负号求余数POJ1745

来源:互联网 发布:系统数据流程图 编辑:程序博客网 时间:2024/05/21 08:52

添加正负号求余数POJ1745



#include <iostream>using namespace std;#define MAXN 10001int dp[MAXN][101];int posmod(int n,int k){正数取余n = n % k;while(n < 0) n+=k;return n;}int main(){int n,k;int i ,j ,tmp;int a[MAXN];while(cin>>n>>k){memset(dp,0,sizeof(dp));for(i = 1;i <= n;i++) cin>>a[i];dp[1][posmod(a[1],k)] = 1;for(i = 2;i <= n;i++){for(j = 0;j < k;j++){if(dp[i - 1][j]){dp[i][posmod(j + a[i],k)] = 1;dp[i][posmod(j - a[i],k)] = 1;}}}if(dp[n][0]){cout<<"Divisible"<<endl;}else{cout<<"Not divisible"<<endl;}}return 0;}