• HDU 5776 sum(抽屉原理)


    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=5776

    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 (1T10), 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 (1n1000001m5000).
    2.The second line contains n positive integers x (1x100) 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
     
    直接拿这道代码改了一下,两道题一个意思http://www.cnblogs.com/Annetree/p/7095096.html
     
     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<string.h>
     6 #include<cmath>
     7 using namespace std;
     8 #define N 100005
     9 
    10 
    11 struct node
    12 {
    13     int num,r;
    14 }k[N];
    15 
    16 bool cmp(node a,node b)
    17 {
    18     if(a.r==b.r)
    19         return a.num<b.num;
    20     return a.r<b.r;
    21 }
    22 
    23 int main()
    24 {
    25     long long sum,a;
    26     int n,m;
    27     bool flag;
    28     int T;
    29     scanf("%d",&T);
    30     while(T--)
    31     {
    32         scanf("%d%d",&n,&m);
    33         flag=false;
    34         if(n>m)
    35             flag=true;
    36         sum=0;
    37         k[0].num=0;
    38         for(int i=1;i<=n;i++)
    39         {
    40             scanf("%lld",&a);
    41             sum+=a;
    42             k[i].r=sum%m;
    43             k[i].num=i;
    44             if(k[i].r==0&&flag==false)
    45             {
    46                 flag=true;
    47             }
    48         }
    49         if(!flag)
    50         {
    51             sort(k+1,k+1+n,cmp);
    52             for(int i=2;i<=n;i++)
    53             {
    54                 if(k[i].r==k[i-1].r)
    55                 {
    56                     flag=true;
    57                     break;
    58                 }
    59             }
    60         }
    61         if(!flag)
    62             printf("NO
    ");
    63         else
    64             printf("YES
    ");
    65     }
    66     return 0;
    67 }
     
  • 相关阅读:
    从输入网址到页面呈现的过程
    Git 常用命令合集
    Jquery浅克隆与深克隆
    CSS变量教程
    设计模式
    Servlet和JSP简述
    SQL Server,MySQL,Oracle三者的区别
    mysql事务处理
    计时器
    java中length,length(),size()区别
  • 原文地址:https://www.cnblogs.com/Annetree/p/7095189.html
Copyright © 2020-2023  润新知