判断整除

总时间限制: 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

【Solution】

  首先,膜法交配律,其实就是模法分配律,即(a+b+c)%k=(a%k+b%k+c%k)%k。所以预处理输入数据全部模k。

  dp[i][j]表示到第i个数模k是否有可能等于j。转移方程为dp[i+1][(j+data[i]-100)%k+100]=dp[i][j] (dp[i][j]==1) , dp[i+1][(j-data[i]-100)%k+100]=dp[i][j] (dp[i][j]==1)。

  AC代码:

 #include <cstdio>
int N,K;
int data[];
int dp[][];
int main(){
scanf("%d%d",&N,&K); for(int i=;i<=N;++i) scanf("%d",&data[i]);
data[]%=K; dp[][+data[]]=dp[][-data[]]=;
for(int i=;i<=N;++i){
data[i]%=K;
for(int j=;j<=K+;++j)
if(dp[i][j]){
dp[i+][(j+data[i]-)%K+]=;
dp[i+][(j-data[i]-)%K+]|=dp[i][j];
}
}
if(dp[N+][]) printf("YES");
else printf("NO");
return ;
}

最新文章

  1. CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)
  2. 烂泥:高负载均衡学习haproxy之安装与配置
  3. AlertDialog禁止返回键
  4. IE 和Firefox的js兼容性总结
  5. CSS------当内容超出div宽度后自动换行
  6. 发现磁盘的shell
  7. nodejs 执行shell 命令
  8. UIView的ContentMode
  9. windows创建虚拟界面
  10. ASP.NET MVC 4 SimpleMembership Provider (1)
  11. 设置DIV隐藏与显示,表格滑动条
  12. 让&lt;未将对象引用到实例&gt;见鬼去吧!
  13. SAP-Basic:使用SCC1时提示 TA263&ldquo;集团被集团副本锁定用于输入&rdquo;
  14. LVM(1)
  15. 降低http请求次数
  16. ARP攻击
  17. centos7安装图形化界面
  18. 解决同一页面中两个iframe互相调用jquery,js函数
  19. CentOS 7 - 更新JDK,删除旧JDK,安装新JDK
  20. 171. Excel Sheet Column Number (Math)

热门文章

  1. C# http Post与Get方法控制继电器
  2. NodeJs03 express框架 Todo商城
  3. Windows 下开发.NET Core应用
  4. 深入理解CSS中的margin
  5. Java对字符串进行加密
  6. [转]Shell dev-null详解
  7. php 值传递和引用传递的区别
  8. nf_register_hooks解读
  9. Struts2的result返回类型
  10. codeforces ice cave