Cod sursa(job #896880)
Utilizator | Data | 27 februarie 2013 17:43:41 | |
---|---|---|---|
Problema | Indep | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.63 kb |
#include<fstream>
using namespace std;
ifstream in("indep.in");
ofstream out("indep.out");
int cmmdc(int a, int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
long long rez[501][1001];
int v[501];
int main()
{
int n, i, j;
in >> n;
for(i=1; i<=n; i++)
{
in >> v[i];
}
rez[1][0]=rez[1][v[1]]=1;
for(i=2;i<=n;i++)
{
for(j=0;j<=1001;++j)
rez[i][cmmdc(j,v[i])] += rez[i-1][j];
for(j=0;j<=1001;j++)
rez[i][j] += rez[i-1][j];
}
out<<rez[n][1] - rez[n-1][1]<<"\n";
}