zoukankan      html  css  js  c++  java
  • k倍区间

    给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。

    你能求出数列中总共有多少个K倍区间吗?

    输入
    第一行包含两个整数N和K。(1 <= N, K <= 100000)
    以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)

    输出
    输出一个整数,代表K倍区间的数目。

    例如,
    输入:
    5 2
    1
    2
    3
    4
    5

    程序应该输出:
    6

    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗 < 2000ms

    通过前缀和加取模,

    然后要知道一个东西就是,只要前缀出现同样的就得累加,

    也就是一个累计数组。

    而且累计数组考虑的不包括本身,所以最后要吧取摸为零的加进去。

     1 #include <iostream>
     2 #define N 100000
     3 #define ll long long int
     4 using namespace std;
     5 ll an[N], bn[N];
     6 int n, k;
     7 
     8 int main(){
     9     cin >> n >> k;
    10     for(int i = 1; i <= n; i++ ){
    11         cin >> an[i];
    12         an[i] %= k;
    13     }
    14     for(int i = 1; i <= n; i++){
    15         an[i] = (an[i] + an[i-1])%k;
    16     }
    17     ll sum = 0;
    18     for(int i = 1; i <= n; i++){
    19         sum += (bn[an[i]]++);
    20     }
    21     cout << sum + bn[0] << endl;
    22     return 0;
    23 }
  • 相关阅读:
    20.Docker Swarm集群
    Phalcon下命令行应用(command line applications)
    Mysql 命令备忘
    PHPExcel+phalcon+yii批量导入
    Yii 之分页 + bootstrap
    PHPMailer+phalcon中使用
    Phalcon之分页
    虚拟机中ip和host设置问题
    php RSS订阅功能
    ubuntu/linux下设置永久路由
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/10578428.html
Copyright © 2011-2022 走看看