Pagini recente » Cod sursa (job #340356) | Cod sursa (job #1113042) | Cod sursa (job #861151) | Cod sursa (job #1542499) | Cod sursa (job #752549)
Cod sursa(job #752549)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("indep.in");
ofstream out("indep.out");
int const N=505;
int const M=1005;
int v[N],d[2][M][75];
int n;
void citire ()
{
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
}
void init (int i, int j)
{
for(int aux=0;aux<75;aux++)
d[i%2][j][aux]=d[(i-1)%2][j][aux];
}
int cmmdc (int x, int y)
{
int a=x, b=y, r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void adunare (int i,int c,int j)
{
int zeci=0;
for(int aux=0;aux<75;aux++)
{
int temp=d[i%2][c][aux]+d[(i-1)%2][j][aux]+zeci;
d[i%2][c][aux]=(temp)%10;
zeci=temp/10;
}
}
void complet ()
{
d[0][0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=1000;j++)
init(i,j);
for(int j=0;j<=1000;j++)
{
int c=cmmdc(j,v[i]);
adunare(i,c,j);
}
}
}
void afis ()
{
int aux=74;
while((d[n%2][1][aux]==0)&&(aux>0))
aux--;
while(aux>=0)
{
out<<d[n%2][1][aux];
aux--;
}
out<<"\n";
}
int main()
{
citire();
complet();
afis();
return 0;
}