当前位置:网站首页>Acwing 4301. Truncated sequence

Acwing 4301. Truncated sequence

2022-07-05 05:20:00 hunziHang

Given a by n A sequence of digits a1a2…an.

among , Every number is 0∼9 One of .

Please judge , Whether the sequence can be truncated from the middle into two or more non empty parts , The sum of the figures in each part is required to be equal .

for example ,350178 Can be truncated to 3 Parts of 350、17、8, And satisfy 3+5+0=1+7=8.

Input format

The first line contains an integer n.

The second line contains n A digital a1,a2,…,an, No spaces between numbers .

Output format

If you can truncate the sequence as required , The output YES, Otherwise output NO.

Data range

front 6 Test points meet 2≤n≤10.
All test points meet 2≤n≤100,0≤ai≤9.

Direct enumeration

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+100;
typedef pair<int,int> PII; 
#define x first
#define y second
#define INF 0x3f3f3f3f
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
const int mod=1e9+7;
int n,m;
int a[N];
int sum;
int main()
{
    string st;
    cin>>n;
    cin>>st;
    for(int i=0;i<n;i++)
    { 
        a[i]=st[i]-'0';
        sum+=a[i];
    }
    

    for(int i=2;i<=n;i++)     // Enumerate the number of segments divided into 
    {

        if(sum%i==0)         // If you can divide it, you can continue to judge 
        {
            int f=sum/i,flag=1;
            for(int j=0,s=0;j<n;j++)
            {
                s+=a[j];
                if(s>f)        //  If exceeded f  Then it will only get bigger and bigger , It is illegal. 
                {
                    flag=0;
                    break;
                }
                else if(s==f)   // For the initial 0
                    s=0;
            }
            if(flag)
            {
                cout<<"YES"<<endl;
                return 0;
            }

        }

        

    }

        cout<<"NO"<<endl;

   return 0;
}

原网站

版权声明
本文为[hunziHang]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140622508672.html