1. 程式人生 > 實用技巧 >CF1462B Last Year's Substring

CF1462B Last Year's Substring

本題解與Luogu同步

題解

這題說實話不難,重點是能不能想到這個點。

首先,我們想一想,要想直接把一個字串去掉一段連續的字串後只剩2020,那麼,應該只有以下幾種情況:

  1. \(2020……\)

  2. \(202……0\)

  3. \(20……20\)

  4. \(2……020\)

  5. \(……2020\)

所以我們就直接進行特判,然後輸出就可以了

Code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

char s[207];
int t, n;

int main()
{
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d", &n);
        cin >> s;
        if(s[0] == '2' && s[1] == '0' && s[2] == '2' && s[3] == '0')
        {
            printf("YES\n");
            continue;
        }
        if(s[n - 4] == '2' && s[n - 3] == '0' && s[n - 2] == '2' && s[n - 1] == '0')
        {
            printf("YES\n");
            continue;
        }
        if(s[0] == '2' && s[n - 3] == '0' && s[n - 2] == '2' && s[n - 1] == '0')
        {
            printf("YES\n");
            continue;
        }
        if(s[0] == '2' && s[1] == '0' && s[n - 2] == '2' && s[n - 1] == '0')
        {
            printf("YES\n");
            continue;
        }
        if(s[0] == '2' && s[1] == '0' && s[2] == '2' && s[n - 1] == '0')
        {
            printf("YES\n");
            continue;
        }
        printf("NO\n");
    }
    return 0;
}