Pagini recente » Cod sursa (job #929921) | Cod sursa (job #2390763) | Cod sursa (job #2404326) | Cod sursa (job #2108815) | Cod sursa (job #1524213)
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 501;
int dp [N][1002], a [N];
inline int cmmdc (int x, int y) {
int r;
while (y) {
r = x % y;
x = y;
y = r;
}
return x;
}
int main () {
int n, i, x, j;
freopen ("indep.in", "r", stdin);
freopen ("indep.out", "w", stdout);
scanf ("%d", &n);
for (i = 1; i <= n; i ++)
scanf ("%d", &a [i]);
dp [1][a [1]] = 1;
for (i = 2; i <= n; i ++) {
memcpy (dp [i], dp [i - 1], sizeof (dp [i - 1]));
dp [i][a [i]] ++;
for (j = 1; j <= 1000; j ++)
if (dp [i - 1][j]) {
x = cmmdc (j, a [i]);
dp [i][x] += dp [i - 1][j];
}
}
printf ("%d\n", dp [n][1]);
return 0;
}