Cod sursa(job #1681264)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 9 aprilie 2016 12:43:56
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#define MAXN 500
#define MAXNR 1000
long long d[MAXN+1][MAXNR+1];
int mat[MAXNR+1][MAXNR+1];
inline int cmmdc(int a,int b){
     int r;
     while(b>0){
        r=a%b;
        a=b;
        b=r;
     }
     return a;
}
int main(){
    FILE*fi,*fout;
    int i,n,nr,j,x;
    fi=fopen("indep.in" ,"r");
    fout=fopen("indep.out" ,"w");
    fscanf(fi,"%d" ,&n);
    for(i=1;i<=MAXNR;i++)
      for(j=1;j<=MAXNR;j++)
         mat[i][j]=cmmdc(i,j);
    for(i=1;i<=n;i++){
       fscanf(fi,"%d" ,&nr);
       d[i][nr]=1;
       for(x=1;x<=MAXNR;x++)
         d[i][mat[nr][x]]+=d[i-1][x];
       for(x=1;x<=MAXNR;x++)
         d[i][x]+=d[i-1][x];
    }
    fprintf(fout,"%lld" ,d[n][1]);
    fclose(fi);
    fclose(fout);
    return 0;
}