Cod sursa(job #257068)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 12 februarie 2009 19:10:12
Problema Indep Scor 5
Compilator c Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
int N,a[505],VMAX;
long long nr[2][1001];
int cmmdc(int a,int b){
    return b==0?a:cmmdc(b,a%b);
    }
int main(){
    int i,j,k,now=1,prev;
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
    scanf("%d",&N);
    for (i=1;i<=N;++i) {scanf("%d",&a[i]);
                        VMAX=VMAX<a[i]?a[i]:VMAX;} 
    nr[1][a[1]]=1;
    for (i=2;i<=N;++i){
      now=i&1;prev=1-now;  
      for (j=1;j<=VMAX;++j){
        nr[now][j]=nr[prev][j];
        for (k=1;k<=VMAX;++k)
          if (cmmdc(k,a[i])==j)
            nr[now][j]+=nr[prev][k];
            }
      }
    printf("%lld",nr[now][1]);
    return 0;
}