Pagini recente » Cod sursa (job #204019) | Cod sursa (job #2607841) | Cod sursa (job #455573) | Cod sursa (job #1664641) | Cod sursa (job #2094325)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("indep.in");
int cmmdc[1001][10000];
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int gcdd(int a,int b)
{
if(a<b)
return gcd(b,a);
return gcd(a,b);
}
void suma(int a[],int b[])
{
int r=0,i;
for(i=1;i<=a[0]||i<=b[0]||r;i++)
{
r+=a[i]+b[i];
a[i]=r%100000;
r/=100000;
}
a[0]=i-1;
}
int main()
{
freopen("indep.out","w",stdout);
int n,i,nr;
in>>n;
cmmdc[0][0]=cmmdc[0][1]=1;
for(i=1;i<1001;i++)
cmmdc[i][0]=1;
while(n--)
{
in>>nr;
for(i=1;i<=1000;i++)
suma(cmmdc[gcdd(nr,i)],cmmdc[i]);
suma(cmmdc[nr],cmmdc[0]);
}
printf("%d",cmmdc[1][cmmdc[1][0]]);
for(i=cmmdc[1][0]-1;i>0;i--)
printf("%.5d",cmmdc[1][i]);
return 0;
}