提交时间:2024-07-30 16:52:53

运行 ID: 30819

#include <bits/stdc++.h> #define int long long #define mod 998244353 using namespace std; int t, n, a, inv[1000005]; bool a1[1000005]; queue <int> q; inline int ksm(int x, int y) { int res = 1; while (y) { if (y & 1) res = res * x % mod; x = x * x % mod, y >>= 1; } return res; } signed main() { int sttt = clock(); freopen("inequality.in", "r", stdin); freopen("inequality.out", "w", stdout); inv[1] = 1; // for (int i = 2; i <= 1000000; i++) // inv[i] = (mod - mod / i) % mod * inv[i - 1] % mod; // inv[i] = ksm(i, mod - 2); // printf("%lld %lld\n", 2 * inv[2] % mod, 6 * inv[3] % mod); scanf("%lld", &t); while (t--) { scanf("%lld", &n); int c1 = 0; for (int i = 1; i <= n; i++) { scanf("%lld", &a); q.push(a); } for (int i = 1; i <= n; i++) { int xi = q.front(); q.pop(); if (xi == 1) { q.push(1); continue; } for (int j = 1; j < n; j++) { int xj = q.front(); q.pop(); if (xj == 1 || xi % xj == 0 || xj % xi == 0) { q.push(xj); continue; } int gg = __gcd(xi, xj); if (!inv[gg]) inv[gg] = ksm(gg, mod - 2); int ll = xi * xj % mod * inv[gg] % mod; xi = gg, xj = ll; q.push(xj); // printf("111"); } q.push(xi); } for (int i = 1; i <= n; i++) { c1 = (c1 + q.front()) % mod; q.pop(); } printf("%lld\n", c1); } // printf("Run time:%lldms", (clock() - sttt) * 1000 / CLOCKS_PER_SEC); return 0; }