cdoj 1017 The King and King boss

王和王老板总是在向大家传授什么是美。今天,王老板要为趣味赛出题,他想出了一个很美的问题:“给你一个包含 n 个元素的整数集合 a1an ,问你是否可以找到它的一个子集,使得这个子集的和可以被 n 整除”

听到了这个问题后,王暗想“这是个非常简单的问题,我可以设计一个动态规划算法在线性时间复杂度内轻松解决”,但他口头上依然称赞这是个非常好的问题。当然,王不打算亲自解决(这题太水啦!),他用不容拒绝的口吻命令你完成它。

Input

第一行是整数集合的大小 n(1n10000)

第二行包含 n 个整数 a1an ,且每个数都小于 10000(ai10000)

Output

如果存在上述的一个子集,输出Yes,否则输出No(注意大小写)。

例子:如果给你三个数的集合{ 2,4,4 },你可以非常轻松地看出,子集{ 2,4 }的和为 6 可以被 3 整除,所以会毫不犹豫地输出Yes

Sample input and output

Sample InputSample Output
3
2 4 4
Yes

Source

qzy


解析

我们模上n得到的余数k只能是0,1,2...n-1。根据抽屉原理,则这n个余数必然存在0或者存在两项相等。如果存在0,那么就选取这个前缀。如果存在两项相等,那么就选取这一段中间的所有数。结论就是不管怎么样都存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值