HDU 5776 sum(思维题+前缀和)
2017-12-06 11:21
232 查看
Problem Description
Given a sequence, you’re asked whether there exists a consecutive subsequence whose sum is divisible by m. output YES, otherwise output NO
Input
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.
Output
Output T lines, each line print a YES or NO.
Sample Input
2
3 3
1 2 3
5 7
6 6 6 6 6
Sample Output
YES
NO
大致题意:给你长度为n的序列,问你是否存在一个连续的子序列,使得该子序列的和能被m整除。
思路:假设sum[i]表示前i个数的前缀和,如果存在sum[i]%m==sum[j]%m,那么(sum[j]-sum[i])%m==0。
代码如下
Given a sequence, you’re asked whether there exists a consecutive subsequence whose sum is divisible by m. output YES, otherwise output NO
Input
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.
Output
Output T lines, each line print a YES or NO.
Sample Input
2
3 3
1 2 3
5 7
6 6 6 6 6
Sample Output
YES
NO
大致题意:给你长度为n的序列,问你是否存在一个连续的子序列,使得该子序列的和能被m整除。
思路:假设sum[i]表示前i个数的前缀和,如果存在sum[i]%m==sum[j]%m,那么(sum[j]-sum[i])%m==0。
代码如下
//#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define LL long long int const int N=1e5+5; int sum ; int f[5005]; int main() { int T; scanf("%d",&T); int n,m; while(T--) { int flag=0; scanf("%d%d",&n,&m); sum[0]=0; memset(f,0,sizeof f); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); sum[i]=sum[i-1]+x; int wei=sum[i]%m; f[wei]++; if(f[wei]%2==0) flag=1; } if(flag==1||f[0]) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- HDU 5776 sum (前缀和)
- HDU 5776 sum (思维题)
- hdu_5776_sum(前缀和维护)
- HDU 5776 sum (BestCoder Round #85 A) 简单前缀判断+水题
- hdu 5776 sum(BestCoder Round #85——思维题)
- 思维题:抽屉原理 hdu 5776 sum & 51Nod 1103 N的倍数
- HDU 5776 sum(前缀和+取模)
- 【HDU】5776 - sum(数论 & 思维)
- HDU 5776 sum (思维题)
- hdu 5776 sum(前缀和取模)
- hdu 5776 sum 前缀和
- HDU - 5776 sum 前缀数组
- HDU 5776 (sum 前缀和)
- hdu 5776 Sum【前缀和相关】
- HDU 5776 sum (模拟)
- hdu 4961 Boring Sum (思维 哈希 扫描)
- hdu 5776 sum
- Hdu 5776 sum
- HDU 5776 sum
- HDU 5776 sum(抽屉原理)