zoukankan      html  css  js  c++  java
  • 51Nod1103 N的倍数

    Problem

    一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数。

    例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数。

    Solution

    前缀和取模,相同的都行,注意下标0。

    Code

    #include<stdio.h>
    #include<set>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<vector>
    
    #define mem(ss) memset(ss,0,sizeof(ss))
    #define rep(d, s, t) for(int d=s;d<=t;d++)
    #define rev(d, s, t) for(int d=s;d>=t;d--)
    typedef long long ll;
    typedef long double ld;
    typedef double db;
    #define io_opt ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
    using namespace std;
    int n;
    ll a[50020];
    vector<int> v[50020];
    int num[50020];
    
    int main() {
        io_opt;
        cin >> n;
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
            num[i]=a[i];
            a[i] += a[i - 1];
            a[i] %= n;
            //cout<<a[i]<<' ';
        }
         //cout<<endl;
        for (int i = 0; i <= n; i++) {
            if (v[a[i]].empty()) {
                v[a[i]].push_back(i);
            } else {
    
                int l = v[a[i]][0], r = i;
                //cout << l << ' ' << r << endl;
                cout<<r-l<<endl;
                for (int j = l+1; j <= r; j++) {
                    cout << num[j] << endl;
                }
                return 0;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    jquery animate() stop() finish() 方法使用
    ant 相关命令
    ant 安装 网址
    邮件
    webdriver until
    python HTML报告
    登录
    yun
    centos7搭建smb服务
    爬取图片
  • 原文地址:https://www.cnblogs.com/sz-wcc/p/11704731.html
Copyright © 2011-2022 走看看