Попадаю в вечный цикл

Решаю задачку где часть задания - считать числа введенные через пробел. Вроде и нашел подходящий код, ибо мой не работал. Но незадача, попадаю в вечный цикл, ибо дальше цикла вообще ничего не происходит и программа стоит на месте.

    #include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <math.h>
using namespace std;

int main()
{
    vector<int> numbers;
    int n;
    while (cin >> n) {
        numbers.push_back(n);        
    }
    int a = numbers.size();
    for (int b = 0; b < a; b++) { // ЭТО ПРОВЕРКА МАССИВА, СЮДА ПРОГРАММА НЕ ДОХОДИТ, ПРОСТО НИЧЕГО НЕ ПРОИСХОДИТ
        cout << numbers[b];
    }

    if (numbers[0] >= 1 && numbers[1] >= 1 && numbers[2] <= pow(10, 18)) {
        int c = (int)pow(numbers[0], numbers[1]);
        int c2 = (int)c;
        int d = c % numbers[2];
        if (d > 0) {
            cout << "\n" << d;
        }
    }
}

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

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

Вот, например, пока целые числа успешно читаюся — примерно так:

vector<int> numbers;
int n;
while(cin >> n) numbers.push_back(n);

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

→ Ссылка
Автор решения: Qwertiy

После ввода чисел нажми Ctrl+Z.

→ Ссылка