Pagini recente » Cod sursa (job #2159211) | Cod sursa (job #148172) | Cod sursa (job #1250364) | Cod sursa (job #1152420) | Cod sursa (job #2710657)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
int N, dp[2][1001][1001], ind = 1;
void add(int A[], int B[]) {
int i, t = 0;
for(i = 1; i <= A[0] || i <= B[0] || t; ++i, t /= 10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
int main() {
fin >> N;
for(int i = 0; i < 2; ++i)
for(int j = 0; j < 1001; ++j)
dp[i][j][0] = 1;
dp[0][0][1] = 1;
for(int i = 1; i <= N; ++i, ind ^= 1) {
int x;
fin >> x;
for(int j = 0; j < 1001; ++j)
for(int k = dp[!ind][j][0]; k >= 0; --k)
dp[ind][j][k] = dp[!ind][j][k];
for(int j = 0; j < 1001; ++j)
add(dp[ind][__gcd(j, x)], dp[!ind][j]);
}
for(int i = dp[!ind][1][0]; i > 0; --i)
fout << dp[!ind][1][i];
}