POJ1745Divisibility【dp】
2015-08-26 10:28
246 查看
Divisibility
Consider an arbitrary sequence of integers. One can place + or - operators between integers in the sequence, thus deriving different arithmetical expressions that evaluate to different values. Let us, for example, take the sequence: 17, 5, -21, 15. There are eight possible expressions: 17 + 5 + -21 + 15 = 16 17 + 5 + -21 - 15 = -14 17 + 5 - -21 + 15 = 58 17 + 5 - -21 - 15 = 28 17 - 5 + -21 + 15 = 6 17 - 5 + -21 - 15 = -24 17 - 5 - -21 + 15 = 48 17 - 5 - -21 - 15 = 18 We call the sequence of integers divisible by K if + or - operators can be placed between integers in the sequence in such way that resulting value is divisible by K. In the above example, the sequence is divisible by 7 (17+5+-21-15=-14) but is not divisible by 5. You are to write a program that will determine divisibility of sequence of integers. Input The first line of the input file contains two integers, N and K (1 <= N <= 10000, 2 <= K <= 100) separated by a space. The second line contains a sequence of N integers separated by spaces. Each integer is not greater than 10000 by it's absolute value. Output Write to the output file the word "Divisible" if given sequence of integers is divisible by K or "Not divisible" if it's not. Sample Input 4 717 5 -21 15 Sample Output Divisible |
dp[i][j]代表前i个数余数为j是否存在
#include<cstdio> #include<cstdlib> #include<cstring> using namespace std; const int MAX=10010; int dp[MAX][110]; int num[MAX]; int main() { int n,m,k,i,j; while(scanf("%d%d",&n,&k)!=EOF){ memset(dp,0,sizeof(dp)); for(i=0;i<n;++i){ scanf("%d",&num[i]); if(num[i]<0){ num[i]*=-1; } num[i]%=k; } dp[0][num[0]]=1; for(i=1;i<n;++i){ for(j=0;j<k;++j){ if(dp[i-1][j]){ dp[i][(j+num[i])%k]=1; dp[i][(k+j-num[i])%k]=1; } } } if(dp[n-1][0]) printf("Divisible\n"); else printf("Not divisible\n"); } return 0; }
相关文章推荐
- liunx ngxtop安装步骤
- 我什么也不是
- 图结构练习——最短路径
- 【转】Hardcoded string XXX, should use @string resource警告
- [LeetCode] Swap Nodes in Pairs
- HDU1385 Minimum Transport Cost(最短路输出路径)
- HDU1257最少拦截系统
- 【Leetcode】Jump Game 1,2
- 对于推送的理解与总结
- Ubuntu 12.04 LTS 中安装 windows 字体
- Android Studio中编码(乱码)问题
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- POJ2388map的应用统计树的百分比,并按照字母顺序输出
- iOS5 ARC学习笔记:strong、weak等详解
- HDU3336——KMP算法
- JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解
- JPA EntityManager 获取session
- TQ2440 学习笔记—— 7、NOR Flash 和 NAND Flash
- 禁止proguard
- ios9 public beta 测试版 装机详细步骤