Cod sursa(job #507497)
Utilizator | mihai995 mihai995 | Data | 6 decembrie 2010 11:26:19 |
---|---|---|---|
Problema | Indep | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <fstream>
using namespace std;
int v[1<<9],n;
long long a[1<<9][1<<10];
ifstream in("indep.in");
ofstream out("indep.out");
int cmmdc(int a,int b)
{
int c;
while (b)
{
c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{
int i,j;
in>>n;
for (i=1;i<=n;i++)
in>>v[i];
a[1][v[1]]=1;
for (i=2;i<=n;i++)
{
for (j=1;j<(1<<10);j++)
a[i][cmmdc(j,v[i])]+=a[i-1][j];
++a[i][v[i]];
for (j=1;j<(1<<10);j++)
a[i][j]+=a[i-1][j];
}
out<<a[n][1]<<'\n';
return 0;
}