Pagini recente » Cod sursa (job #893700) | Cod sursa (job #701597) | Cod sursa (job #2809332) | Cod sursa (job #2782171) | Cod sursa (job #2705227)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
int n, el;
vector <int> pd[505][1005];
void aduna(vector <int> &a, vector <int> b) {
if (a.size() < b.size())
swap(a, b);
int rest = 0;
for (int i = 0; i < a.size() || rest > 0; ++i) {
if (i >= a.size()) {
a.push_back(rest % 10);
rest /= 10;
continue;
}
if (i < b.size())
a[i] += b[i];
a[i] += rest;
rest = a[i] / 10;
a[i] %= 10;
}
return;
}
int main() {
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> el;
for (int j = 1; j <= 1000; ++j) {
int c = __gcd(el, j);
if (pd[i][c].empty())
pd[i][c] = pd[i - 1][c];
aduna(pd[i][c], pd[i - 1][j]);
}
for (int j = 1; j <= 1000; ++j)
if (pd[i][j].empty())
pd[i][j] = pd[i - 1][j];
aduna(pd[i][el], {1});
}
for (int i = pd[n][1].size() - 1; i >= 0; --i)
fout << pd[n][1][i];
return 0;
}