从n个数中选出几个数使和为n的倍数(鸽巢原理)
Origin
题意:
给定一个长度为 的数组,你需要从里面选择一些数,使得其和为 的倍数。
思路:
我们可以计算前缀和,其中 。
对于前缀和数组来说,一共有 个数,而我们关心的是 的倍数,所以我们都模上 。
而模 的值的可能只有 种,那么这 个数中一个存在两个相同的数。
如果后 个数里面有 的话,可以和 匹配。
如果后 个数里面没有 的话,那就是 个位置里面塞 种数,必然有一个重复的。
可以发现,我们一定能找到一种情况。
Code
1 | |
给定一个长度为 的数组,你需要从里面选择一些数,使得其和为 的倍数。
我们可以计算前缀和,其中 。
对于前缀和数组来说,一共有 个数,而我们关心的是 的倍数,所以我们都模上 。
而模 的值的可能只有 种,那么这 个数中一个存在两个相同的数。
如果后 个数里面有 的话,可以和 匹配。
如果后 个数里面没有 的话,那就是 个位置里面塞 种数,必然有一个重复的。
可以发现,我们一定能找到一种情况。
1 | |
思科人才孵化项目 Day4
思科人才孵化项目 Day3