Cod sursa(job #257645)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 13 februarie 2009 18:44:28
Problema Indep Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
int N,a[505],VMAX,nr[2][1002];
int cmmdc(int x,int y){
    if (y==0) return x;
    return cmmdc(y,x%y);
    }
int main(){
    int i,j,k,prev,now;
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
    scanf("%d",&N);
    for (i=1,VMAX=0;i<=N;++i) {
        scanf("%d",&a[i]);
        if (a[i]>VMAX) VMAX=a[i];
        }
    for (i=1;i<=N;++i){
        now=i&1;prev=1-now;
        for (j=1;j<=VMAX;++j){
          nr[now][j]=nr[prev][j];
          k=cmmdc(j,a[i]);
          nr[now][k]+=nr[prev][j];
          }
        ++nr[now][a[i]];
        }
    for (i=1,k=0;i<=N;++i)
      if (a[i]==1) ++k;
    printf("%d",nr[now][1]-k); 
    return 0;
}