Решение задачи "Максимум" с Timus

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


Рассмотрим последовательность чисел ai, i = 0, 1, 2, …, удовлетворяющих следующим условиям:
$$ a_0 = 0 $$
$$ a_1 = 1 $$
$$ a_{2i} = a_i $$
$$ a_{2i} + 1 = a_i + a_i + 1 $$
для каждого i = 1, 2, 3, … .
Напишите программу, которая для заданного значения n находит максимальное среди чисел $$ a_0, a_1, …, a_n. $$

Код

#include<bits/stdc++.h>

using namespace std;

int main()
{
    //a0 = 0, a1 = 1, a2 = 1, a3 = 2, a4 = 1, a5 = 3, a6 = 2, a7 = 3, a8 = 1, a9 = 4
    vector<int> a; vector<int> m;
    a.push_back(0); a.push_back(1);
    m.push_back(0); m.push_back(1);
    int mx = 1;
    for(int i = 2; i < 100000; ++i){
        if(i % 2 == 0){
            a.push_back(a[i/2]);
            m.push_back(mx);
        }
        else{
            a.push_back(a[i/2] + a[i/2 + 1]);
            mx = max(mx, a[i]);
            m.push_back(mx);
        }
    }
    int t;
    while(cin >> t){
        if(t == 0)
            break;
        cout << m[t] << endl;
    }
    return 0;
}

         

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


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

Комментарии

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