Pagini recente » Rating Cotoman Camelia (Camelutza) | Cod sursa (job #1772571) | Istoria paginii utilizator/dj_buruiana | Monitorul de evaluare | Cod sursa (job #325536)
Cod sursa(job #325536)
#include <cstdio>
#include <algorithm>
using namespace std;
#define file_in "indep.in"
#define file_out "indep.out"
#define Baza 1000000000
int v[1010];
int n,Cnt[1010][1010][2],ind,i,j;
int cmmdc(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void adunare(int l)
{
//int i;
int m=max(Cnt[j][0][ind],Cnt[l][0][ind^1]);
for (i=1;i<=m;++i)
Cnt[l][i][ind^1]+=Cnt[j][i][ind];
for (i=1;i<=m;++i)
{
Cnt[l][i+1][ind^1]+=(Cnt[l][i][ind^1]/Baza);
Cnt[l][i+1][ind^1]%=Baza;
}
Cnt[l][0][ind^1]=m;
if (Cnt[l][m+1][ind^1])
Cnt[l][0][ind^1]++;
}
void afisare()
{
//int i;
printf("%d", Cnt[1][Cnt[1][0][ind]][ind]);
for (i=Cnt[1][0][ind]-1;i>=1;--i)
printf("%.09d", Cnt[1][i][ind]);
}
int main()
{
//int i,j;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &n);
for (i=1;i<=n;++i)
scanf("%d", &v[i]);
/*Cnt[1][v[1]]=1;
for (i=1;i<n;++i)
{
Cnt[i+1][v[i+1]]++;
for (j=1;j<=1000;++j)
{
Cnt[i+1][j]+=Cnt[i][j];
Cnt[i+1][cmmdc(j,v[i+1])]+=Cnt[i][j];
}
}*/
ind=0;
Cnt[v[1]][0][ind]=1;
Cnt[v[1]][0][ind^1]=1;
for (i=1;i<n;++i)
{
//memset(Cnt,0,sizeof(Cnt));
for (j=1;j<=1000;++j)
{
memset(Cnt,0,sizeof(Cnt));
Cnt[j][0][ind^1]=1;
}
Cnt[v[i+1]][1][ind^1]=1;
for (j=1;j<=1000;++j)
{
adunare(j);
adunare(cmmdc(j,v[i+1]));
}
ind^=1;
}
//printf("%lld", Cnt[n][1]);
afisare();
fclose(stdin);
fclose(stdout);
return 0;
}