• Contest20140710 sequence


    sequence|sequence.in|sequence.out


    题目描述:

    给定一个整数K和长为N的数列{Ai},求有多少个子串(不含空串)的和为K的倍数。(在这里子串表示{A[i]..A[j]}i<=j


    输入格式:

    共两行

    第一行两个整数N,K

    第二行N个整数表示数列{Ai}


    输出格式:

    一行一个整数表示满足条件的子串的个数


    样例输入:

    6 3

    1 2 6 3 7 4


    样例输出:

    7


    数据范围:

    20% N<=100

    对另外20% K<=100

    对所有数据N<=500000 K<=500000

    保证输入数据中所有数都能用longint保存

     

    一定注意mod为负数的情况。

     

     

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    #define PROB "sequence"
    #define MAXN 550000
    #ifdef unix
    #define LL "%lld"
    #else
    #define LL "I64d"
    #endif
    typedef long long qword;
    int num[MAXN];
    int sum[MAXN];
    int tot[MAXN];
    int main()
    {
            freopen(PROB".in","r",stdin);
            freopen(PROB".out","w",stdout);
            int n,m;
            int i,j;
            scanf("%d%d",&n,&m);
            for (i=1;i<=n;i++)
            {
                    scanf("%d",num+i);
                    sum[i]=(sum[i-1]+num[i])%m;
                    sum[i]=(sum[i]+m)%m;
            }
            qword ans=0;
            for (i=0;i<=n;i++)
            {
                    ans+=tot[sum[i]];
                    tot[sum[i]]++;
            }
            printf(LL" ",ans);
    }

     

     

    by mhy12345(http://www.cnblogs.com/mhy12345/) 未经允许请勿转载

    本博客已停用,新博客地址:http://mhy12345.xyz

  • 相关阅读:
    冲刺第九天
    冲刺第八天
    寻找小水王
    冲刺第七天
    冲刺第六天
    冲刺第五天
    寻找水王程序二
    学习进度条(第十二周)
    寻找水王程序一
    学习进度条(第十一周)
  • 原文地址:https://www.cnblogs.com/mhy12345/p/3837314.html
Copyright © 2020-2023  润新知