Pagini recente » Cod sursa (job #2191193) | Cod sursa (job #1067587) | Cod sursa (job #2473654) | Cod sursa (job #2460472) | Cod sursa (job #3314456)
#include <bits/stdc++.h>
#define int long long
#pragma GCC optimize ("O3")
#define pb push_back
using namespace std;
vector <vector<int>> dp(1001, {0});
void Adunare(vector <int> &a,vector <int> b){
while (b.size()>a.size()){
a.push_back(0);
}
while (b.size()<a.size()){
b.push_back(0);
}
int r = 0;
for (int i=0;i<a.size();++i){
a[i] = a[i]+b[i]+r;
r = a[i]/10;
a[i] = a[i]%10;
}
if (r){
a.push_back(r);
}
return;
}
signed main(){
ifstream cin ("indep.in");
ofstream cout ("indep.out");
int n, ss=0;cin >> n;
vector <int> v;
for(int i=0;i < n;i++){
int x;cin >> x;v.pb(x);ss+=x;
}
//dp[v[0]]=1;
Adunare(dp[v[0]], {1});
for(int i=1;i < n;i++){
for(int j=1;j <= 1000;j++){
Adunare(dp[__gcd(v[i], j)], dp[j]);
}
//dp[v[i]]++;
Adunare(dp[v[i]], {1});
}
reverse(dp[1].begin(), dp[1].end());
bool ok = true;
for(auto x : dp[1]){
if(x == 0 && ok)continue;
ok=false;
cout << x;
}
return 0;
}