Cod sursa(job #299598)

Utilizator DraStiKDragos Oprica DraStiK Data 6 aprilie 2009 21:23:37
Problema Indep Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <algorithm>
#define DIM 505
using namespace std;
int a[DIM],b[2][DIM];
int n,nmax;
void read ()
{
	int i;
	scanf ("%d",&n);
    for (i=1; i<=n; ++i)
    {
        scanf ("%d",&a[i]);
        if (a[i]>nmax)
            nmax=a[i];
    }
}
int cmmdc (int a,int b)
{
    int r;
    do
    {
        r=a%b;
        a=b;
        b=r;
    }
    while (r);
    return a;
}
void solve ()
{
    int i,j,i1=0,i2=1,nr;
    for (i=1; i<=n; ++i)
    {
        b[i2][a[i]]=1;
        for (j=1; j<=nmax; ++j)
			if (b[i1][j])
            {
                nr=cmmdc (a[i],j);
                b[i2][nr]+=b[i1][j];
                b[i2][j]+=b[i1][j];
            }
		i1^=i2^=i1^=i2;
        memset (b[i2],0,sizeof (b[i2]));
    }
    printf ("%d",b[i1][1]);
}
int main ()
{
    freopen ("indep.in","r",stdin);
    freopen ("indep.out","w",stdout);
    read ();
    solve ();
    return 0;
}