zoukankan      html  css  js  c++  java
  • uva 10036 Problem C: Divisibility

    题意:能否在一个整数序列的每相邻的两项之间添加一个加减号,使得最终结果能被一个给定整数K<=100整除。

    dp[i][j]表示第i个数取余k为j的布尔值。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 20000
     5 using namespace std;
     6 
     7 int t;
     8 int n,k;
     9 int a[maxn];
    10 bool flag;
    11 bool dp[maxn][110];
    12 
    13 int main()
    14 {
    15     scanf("%d",&t);
    16     while(t--)
    17     {
    18         memset(dp,false,sizeof(dp));
    19         scanf("%d%d",&n,&k);
    20         for(int i=0; i<n; i++)
    21         {
    22             scanf("%d",&a[i]);
    23         }
    24         dp[0][abs(a[0])%k]=true;
    25         for(int i=1; i<n; i++)
    26         {
    27             for(int j=0; j<k; j++)
    28             {
    29                 if(dp[i-1][j])
    30                 {
    31                     dp[i][(j+k+abs(a[i]))%k]=true;
    32                     dp[i][((j+k-abs(a[i]))%k+k)%k]=true;
    33                 }
    34             }
    35         }
    36         if(dp[n-1][0]) printf("Divisible
    ");
    37         else printf("Not divisible
    ");
    38     }
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    测试报告M2
    11.24Daily Scrum(4)
    11.24Daily Scrum(3)
    11.24Daily Scrum(2)
    11.24Daily Scrum
    11.22Daily Scrum(2)
    11.22Daily Scrum
    Echarts中graph类型的运用求教
    Echarts学习求教
    用node编写自己的cli工具
  • 原文地址:https://www.cnblogs.com/fanminghui/p/4022937.html
Copyright © 2011-2022 走看看