Pagini recente » Cod sursa (job #266079) | Cod sursa (job #867057) | Cod sursa (job #1749838) | Cod sursa (job #1672164) | Cod sursa (job #498829)
Cod sursa(job #498829)
#include<cstdio>
#include<iostream>
using namespace std;
const int NMAX = 505;
const int divmax = 1005;
int N;
int A[NMAX];
int C[NMAX][divmax];
void citire()
{
cin >> N;
for(int i = 1 ; i <= N ; i++)
cin >> A[i];
}
int cmmdc(int a, int b)
{
int r;
while(b)
{
r = a % b;
a = b;
b = r;
}
return a;
}
void dinamic()
{
C[1][A[1]] = 1;
for(int i = 2 ; i <= N ; i++)
{
for(int j = 1 ; j <= 1000 ; j++)
C[i][j] = C[i - 1][j];
for(int j = 1 ; j <= 1000 ; j++)
C[i][cmmdc(j, A[i])] += C[i - 1][j];
}
}
void scrie()
{
printf("%d\n", C[N][1]);
}
int main()
{
freopen("indep.in", "r", stdin);
freopen("indep.out", "w", stdout);
citire();
dinamic();
scrie();
return 0;
}