江西理工大学南昌校区排名赛 B: 单身狗的数字游戏

题目描述

萌樱花是一只单身狗。

萌樱花今天初始化了N个数字,使它们都为0 0 0 0...

萌樱花决定选取某一个位置,分别增加1到N(如果到达数组末尾就从头开始)。

比如:

    0 0 0(选择第二个位置开始)

    3 1 2(选择第三个位置开始)

    5 4 3(选择第 X 个位置开始)

    .......

萌樱花因为单身,所以老是忘记自己做过什么。他现在忘记了这些数字是不是经过上面操作得到的。

如果可以通过这种操作得到,输出 YES,否则输出 NO

输入

N<=105

Ai<=109

输入格式:

N

A1 A2 A3 .....AN

输出

 符合操作输出YES,否则输出NO

样例输入

3
5 4 3

样例输出

YES

提示

 见题目描述

#include<bits/stdc++.h>
using namespace std;
#define  ll long long
ll a[200000];
ll d[200000];

int main()
{
    ll n;
    ll sum=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        sum+=a[i];
    }
    for(int i=0;i<n-1;i++)
    {
        d[i]=a[i+1]-a[i];
    }
    d[n-1]=a[0]-a[n-1];
    if(sum%(n*(n+1)/2)==0)
    {
        ll k=sum/(n*(n+1)/2);
        for(int i=0;i<n;i++)
        {
            if((k-(d[i]))%n||k-d[i]<0)
            {
                cout<<"NO"<<endl;
                return 0;
            }
        }
        cout<<"YES"<<endl;
    }
    else
    {
        cout<<"NO"<<endl;
    }
}

猜你喜欢

转载自www.cnblogs.com/yinghualuowu/p/9494678.html
今日推荐