zoukankan      html  css  js  c++  java
  • 51nod 1103 N的倍数 抽屉原理

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1103 

    No solution的情况是不存在的,如果n个数中存在8的倍数,那么直接输出这个数就好了,如果不存在,n个数对n取余,因为不存在余数为0,所以共n-1种余数,n个中至少有两个余数相同,因此一定存在使得和为8的倍数的情况。

    ①如果前缀和%n==0,此时前i个数的和为8的倍数,输出前i个数即可

    ②如果不存在前缀和%n==0,则必然至少存在两个前缀和相同,相减可得到和%n==0的部分

    #include<iostream>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    typedef long long ll;
    int n,a[50005];
    int sum[50005];
    bool b[50005];
    int flag = 0;
    int main()
    {
        cin >> n;
        sum[0] = 0;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
            sum[i] = (sum[i - 1] + a[i])%n;
            if (sum[i] == 0)
            {
                flag = 1;
                cout << i << endl;
                for (int j = 1; j <= i; j++)
                    cout << a[j] << endl;
                break;
            }
        }
        memset(b, 0, sizeof(b));
        b[sum[1]] = 1;
        if (!flag)
        {
            for (int i = 1; i <= n; i++)
            {
                if (!b[sum[i]])
                    b[sum[i]] = i;
                else
                {
                    cout << i - b[sum[i]] << endl;
                    for (int j = b[sum[i]] + 1; j <= i; j++)
                        cout << a[j] << endl;
                    break;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    ZOJ3414Trail Walk(计算几何)
    ZOJ-3410Layton's Escape(优先队列+贪心)
    爬虫之requests
    爬虫
    flsk-SQLALchemy
    flask--Wtform
    flask---信号
    flask-session
    单例模式
    Python-flask中数据库连接池DBUtils
  • 原文地址:https://www.cnblogs.com/Egoist-/p/7445014.html
Copyright © 2011-2022 走看看