Pagini recente » Cod sursa (job #2132880) | Cod sursa (job #1894611) | Cod sursa (job #31280) | Cod sursa (job #1439031) | Cod sursa (job #551225)
Cod sursa(job #551225)
#include <fstream>
#include <iostream>
# define DIM 1024
# define B 1000000000
using namespace std;
int n, v[DIM], d[1000][DIM], nmax;
void read ()
{
ifstream fin ("indep.in");
fin>>n;
for(int i=1;i<=n;++i)
{
fin>>v[i];
if (v[i]>nmax)
nmax=v[i];
}
}
/*
void aduna (int s[], int a[], int b[])
{
int q, t=0;
for(int i=1;i<=a[0] || i<=b[0];++i)
{
q=a[i]+b[i]+t;
s[i]=q%B;
t=q/B;
s[0]=i;
}
while (t)
{
s[++s[0]]=t%B;
t/=B;
}
}*/
int cmmdc (int x, int y)
{
int r;
do{
r=x%y;
x=y;
y=r;
}
while (r);
return x;
}
void din ()
{
int p=1;
// for(int j=1;j<=nmax;++j)
// d[1][j][0]=1;
// d[1][v[1]][1]=1;
d[1][v[1]]=1;
for(int i=2;i<=n;++i)
{
p=1-p;
//d[i][v[i]][1]=1;
d[i][v[i]]=1;
for(int j=1;j<=nmax;++j)
d[i][cmmdc(v[i],j)]+=d[i-1][j]+(j!=cmmdc(v[i],j)?d[i-1][cmmdc(v[i],j)]:0);
//aduna(d[p][cmmdc(v[i],j)],d[1-p][j],d[1-p][cmmdc(v[i],j)]);
}
}
/*
void write ()
{
ofstream fout ("indep.out");
fout<<d[n%2][1][d[n%2][1][0]];
for(int i=d[n%2][1][0]-1;i;--i)
{
int x;
x=d[n%2][1][i];
while (x*10<B)
{
fout<<"0";
x*=10;
}
fout<<d[n%2][1][i];
}
}*/
int main ()
{
read ();
din();
ofstream fout ("indep.out");
fout<<d[n][1];//write ();
return 0;
}