Accepted
Code
#include<bits/stdc++.h>
using namespace std;
const long long mode=1e9+7;
int main()
{
long long t;
cin>>t;
while(t--){
long long a;
cin>>a;
vector<long long>v;
long long sum1=0;
for(long long i=1;i<=a;i++){
long long x;
cin>>x;
sum1+=x;
v.push_back(x);
}
vector<vector<long long>>res;
res.push_back({});
for(long long i=0;i<a;i++){
long long sz=res.size();
for(long long j=0;j<sz;j++){
vector<long long> ans=res[j];
ans.push_back(v[i]);
res.push_back(ans);
}
}
vector<long long>ans;
map<long long,long long>cnt;
for(long long i=2;i<=a;i++){
vector<long long>v1;
for(auto u:res){
if(u.size()==i){
long long gcd=0;
for(auto g:u){
gcd=__gcd(gcd,g);
}
v1.push_back(gcd);
}
}
if(!v1.empty()){
long long sum=0;
for(auto u:v1) sum+=u;
ans.push_back(sum);
}
}
sum1%=mode;
for(auto u:ans){
sum1=((sum1%mode)*(u%mode))%mode;
}
cout<<sum1<<endl;
}
}
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:17:01
- Judged At
- 2025-09-02 17:17:01
- Judged By
- Score
- 100
- Total Time
- 54ms
- Peak Memory
- 536.0 KiB