/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 6ms 344.0 KiB
#3 Accepted 26ms 532.0 KiB
#4 Accepted 24ms 532.0 KiB
#5 Accepted 22ms 324.0 KiB
#6 Accepted 22ms 560.0 KiB
#7 Accepted 19ms 324.0 KiB

Code

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using dt = array<int, 2>;

const int MOD = 1e9 + 7;

int calc(vector<int>& a, vector<int>& ids) {
  int g = 0;
  for (int e : ids) {
    g = gcd(g, a[e]);
  }
  return g;
}

void test() {
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
  	cin >> a[i];
  }

  ll ans = 1;
  for (int sz = 1; sz <= n; sz++) {
    ll sum = 0;
    vector<int> mask(sz, 1);
    mask.resize(n, 0);
    do {
      vector<int> ids;
      for (int i = 0; i < n; i++) {
      	if (mask[i]) ids.push_back(i);
      }
      sum += calc(a, ids);
    } while (prev_permutation(mask.begin(), mask.end()));
    ans = (ans * (sum % MOD)) % MOD;
  }
  cout << ans % MOD << "\n";
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int T = 1;  
  cin >> T;
  for (int i = 1; i <= T; i++) {
    test();
  }
  return 0;
}

Information

Submit By
Type
Submission
Problem
P1105 Ohh that gcd again
Contest
LUCC Presents Intra LU Junior Programming Contest - Replay
Language
C++17 (G++ 13.2.0)
Submit At
2025-09-02 17:16:19
Judged At
2025-09-02 17:16:19
Judged By
Score
100
Total Time
26ms
Peak Memory
560.0 KiB