LibreOJ #6220. sum

二次联通门 : LibreOJ #6220. sum

 

 

 

 

 

/*
    LibreOJ #6220. sum

    对所有数做一个前缀和
    如果某一位模N等于另一位
    则他们中间的一段的和一定为N的倍数

    自己感悟一下

    (MMP 我交了11遍才过!!!!⑨快把我冻成冰块!!)
*/
#include <cstdio>
#include <iostream>

#define Max 1111111

int pos[Max];

typedef long long LL;
inline void read (LL &now)
{
    register char c = getchar ();
    for (now = 0; !isdigit (c); c = getchar ());
    for (; isdigit (c); now = now * 10 + c - '0', c = getchar ());
}

LL a[Max];
int Main ()
{
    int N; int s = 0; scanf ("%d", &N); register int i;
    for (i = 1, pos[0] = 1; i <= N; ++ i)
    {
        read (a[i]); s = (s + a[i]) % N;    
        if (!pos[s]) pos[s] = i + 1;
        else
        {
            for (register int j = pos[s]; j <= i; ++ j)
                printf ("%d %lld\n", j, a[j]);
            return 0;
        }    
    }    
    return 0;
}
int ZlycerQan = Main ();
int main (int argc, char *argv[]) {;}

 

转载于:https://www.cnblogs.com/ZlycerQan/p/7423323.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值