题意:

对于长度为n的数组a,从第一位开始如果可以整除x,就将x个a/x的结果加到数组最后,然后对下一位进行一样的操作,直到第x位不可以整除x,到此结束,然后计算此时数组的总和

题解:

最直接的方法就是按照题意模拟即可
然后稍微优化优化就行(不优化好像问题也不大)

代码:

#include <bits/stdc++.h>
using namespace std;
#define qc std::ios::sync_with_stdio(0);
int a[100001];
int b[100001];

int main() {
    qc;
    cin.tie(0);
    int t;
    cin >> t;
    while (t--) {
        int n, k;
        long long ans = 0;
        cin >> n >> k;
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            b[i] = 1;
            ans += a[i];
        }
        int flag = 0;
        while (1) {
            for (int i = 0; i < n; i++) {
                if (a[i] % k != 0) {
                    flag = 1;
                    break;
                } else {
                    a[i] = a[i] / k;
                    b[i] = b[i] * k;
                    ans += b[i] * a[i];
                }
            }
            if (flag == 1)
                break;
        }
        cout << ans << endl;
    }
}