вместо нужных значений выводится какой-то бред. Помогите, пожалуйста

введите сюда описание изображения

#include <iostream>

int main()
{
    int N, A, B, i, j, sum;
    std::cin >> N >> A >> B;
    int *abarray = new int[N+1];
    abarray[0] = A;
    abarray[1] = B;
    for (i=2; i <= N - 2; i++)
    {
        sum = 0;
        for (j = 0; j <= i; j++)
        {
            sum += abarray[j];
        }
        abarray[i] += sum;
    }
    for (int i = N; i>=0; i--) std::cout << abarray[i] << "\n";
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Так сойдет?

int main()
{
    int N;
    std::cin >> N;
    int *abarray = new int[N];
    std::cin >> abarray[0] >> abarray[1];
    for (int i = 2, k = 1, m = abarray[0] + abarray[1];
         i < N; i++, k*=2) abarray[i] = m*k;
    for (int i = N; i-->0;)
        std::cout << abarray[i] << " ";
}

Можно и без массива и с одним циклом:

int main()
{
    int N, A, B;
    std::cin >> N >> A >> B;
    B += A;
    N = (1 << (N-3))*B;
    for(;N != B;N >>= 1) std::cout << N << " ";
    std::cout << B << " " << B-A << " " << A;
}
→ Ссылка