Решение задачи "Забавная последовательность " с Acmp

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


Определим последовательность ai следующим образом: a1 = 1, an = an-1+ 3, если число n уже встречалось в последовательности a, и an = an-1 + 2, иначе. Нетрудно видеть, что первые 8 членов этой последовательности таковы: 1, 3, 6, 8, 10, 13, 15, 18.

Ваша задача вычислить an.

Код

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n;
    cin >> n;
    vector<int> b(1000000);
    vector<int> a;
    a.push_back(1);
    a.push_back(3);
    ++b[2];
    if(n == 1){
        cout << 1;
        return 0;
    }
    if(n == 2){
        cout << 3;
        return 0;
    }
    int k = 2;
    while(n != a.size()){
        if(b[k] > 0)
            a.push_back(a[k - 1] + 3);
        else
            a.push_back(a[k - 1] + 2);
        ++b[a[k] - 1];
        ++k;
    }
    cout << a[n - 1];
    return 0;
}

         

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


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

Комментарии

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