Решение задачи "Волшебные числа" с Codeforces

Без пояснения   Просмотров: 11


Волшебное число — это такое число, которое получается конкатенацией (сцеплением) чисел 1, 14 и 144. Каждое число разрешается брать сколько угодно раз. Следовательно, 14144, 141414 и 1411 — волшебные числа, а 1444, 514 и 414 — нет.

Вам дано число. Определите, волшебное оно или нет.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string n;
    cin >> n;
    while(n.size() > 2){
        if(n[0] == '1' && n[1] == '4' && n[2] == '4')
            n.erase(0, 3);
        else if(n[0] == '1' && n[1] == '4')
            n.erase(0, 2);
        else if(n[0] == '1')
            n.erase(0, 1);
        else{
            cout << "NO";
            return 0;
        }
    }
    if(n == "144")
        n.clear();
    int pos = n.find("14");
    while(pos + 1){
        n.erase(pos, 2);
        pos = n.find("14", pos);
    }
    pos = n.find("1");
    while(pos + 1){
        n.erase(pos, 1);
        pos = n.find("1", pos);
    }
    if(n.size())
        cout << "NO";
    else
        cout << "YES";
    return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться