poj 1945 Divisibility

来源:互联网 发布:centos上安装hadoop 编辑:程序博客网 时间:2024/06/05 22:55

题目链接:http://poj.org/problem?id=1745

题目思路:对结果取模。

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<queue>#include<algorithm>#include<vector>#include<stack>#include<list>#include<iostream>#include<map>using namespace std;#define inf 0x3f3f3f3f#define Max 110int max(int a,int b){return a>b?a:b;}int min(int a,int b){return a<b?a:b;}int n,k;int dp[2][110],a[10100];int main(){    int i,j;    scanf("%d%d",&n,&k);    for(i=1;i<=n;i++)    {        scanf("%d",&a[i]);        a[i]%=k;    }    dp[0][0]=1;    int tmp=0;    for(i=1;i<=n;i++)    {        memset(dp[1-tmp],0,sizeof(dp[1-tmp]));        for(j=0;j<k;j++)        {            if(dp[tmp][j])            {                dp[1-tmp][(j+a[i]+k)%k]=1;                dp[1-tmp][(j-a[i]+k)%k]=1;            }        }        tmp=1-tmp;    }    if(dp[tmp][0]==1)        printf("Divisible\n");    else        printf("Not divisible\n");}