Pagini recente » Cod sursa (job #1564191) | Cod sursa (job #2534605) | Cod sursa (job #2926361) | Cod sursa (job #3281078) | Cod sursa (job #2095063)
#include <fstream>
using namespace std;
ifstream in ("indep.in");
ofstream out ("indep.out");
const int N=1010;
const int komod=100000000;
int n;
int v[30],a[N][30];
int cmmdc(int a,int b)
{
int r;
while (b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void aduna(int a[],int b[])
{
int i=1,nr=0;
while (i<=a[0] || i<=b[0] || nr!=0)
{
nr+=a[i]+b[i];
a[i]=nr%komod;
i++;
nr/=komod;
}
a[0]=i-1;
}
int main()
{
int i,x,j;
in>>n;
for (i=1;i<=1000;i++)
a[i][0]=1;
v[0]=v[1]=1;
for (i=1;i<=n;i++)
{
in>>x;
for (j=1;j<=1000;j++)
aduna(a[cmmdc(x,j)],a[j]);
aduna(a[x],v);
}
out<<a[1][a[1][0]];
for (i=a[1][0]-1;i>0;i--)
{
int c=a[1][0], nr=0;
while(c)
nr++, c/=10;
c=8-nr;
while (c)
{
out<<0;
c--;
}
out<<a[1][i];
}
return 0;
}