为什么这种方法测试过不了?代码哪里有问题吗?

图片说明

/*14. 输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
   输出n行,每行为输入对应的八进制正整数。*/
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int* a = new int[n];
    for (int i = 0; i < n; i++)
    {
        cin >> hex >> *(a + i);
        cout << oct << *(a + i) << endl;
    }
    return 0;
}

看看题目怎么说,是不是不是输入一行输出一行,而是全部输入后再全部输出。