HDU 5776 BestCoder Round #85 sum (数学)
2016-07-31 11:45
477 查看
sum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 557 Accepted Submission(s): 269
[align=left]Problem Description[/align]
Given a sequence, you're asked whether there exists a consecutive subsequence whose sum is divisible by m. output YES, otherwise output NO
[align=left]Input[/align]
The first line of the input has an integer T (1≤T≤10),
which represents the number of test cases.
For each test case, there are two lines:
1.The first line contains two positive integers n, m (1≤n≤100000,
1≤m≤5000).
2.The second line contains n positive integers x (1≤x≤100)
according to the sequence.
[align=left]Output[/align]
Output T lines, each line print a YES or NO.
[align=left]Sample Input[/align]
2
3 3
1 2 3
5 7
6 6 6 6 6
[align=left]Sample Output[/align]
YES
NO
[align=left]Source[/align]
BestCoder Round #85
[align=left]Recommend[/align]
wange2014 | We have carefully selected several similar problems for you: 5780 5779 5778 5777 5775
题解:预处理前缀和,一旦有两个数模m的值相同,说明中间一部分连续子列可以组成m的倍数。另外,利用抽屉原理,我们可以得到,一旦n大于等于m,答案一定是YES 。复杂度 O(n) 。
AC代码:
#include<bits/stdc++.h> using namespace std; int n,m; int a[100010]; bool vis[100010]; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(vis,0,sizeof(vis)); int sum=0; vis[0]=1; bool flag=0; for(int i=1;i <= n;i++) { scanf("%d",&a[i]); sum=(sum+a[i])%m; if(vis[sum]) { flag=1; } //如果有两个余数相同,那这相加的数中一定有可模 m 的 vis[sum] = 1; } puts(flag ?"YES" : "NO"); } return 0; }
相关文章推荐
- HDU 5776 sum(数学)
- hdu 4961 Boring Sum(数学题)
- HDU 1977 Consecutive sum II(数学)
- hdu_5776_sum(前缀和维护)
- HDU 5776/BC 85A sum
- HDU 5776 sum(前缀和+取模)
- HDU 2058 The sum problem 数学题
- HDU-5776 Sum
- HDU 2058 The sum problem [数学]
- HDU 5776 sum
- HDU 5053 the Sum of Cube(数学求立方和)
- hdu 2058 The sum problem(数学题)
- hdu 2058 The sum problem(数学题)
- HDU 5776 sum
- hdu 3113 Sum of Cubes 数学 枚举 剪枝
- HDU-2058-The sum problem(数学题技巧型)
- HDU-2709 Sumsets 数学题 dp
- hdu - 2058 The sum problem (数学题)
- hdu-5776 sum(同余)
- HDU 5776 (sum 前缀和)