Cod sursa(job #2332860)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 31 ianuarie 2019 12:48:33
Problema Indep Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1005;
long long cmmdc[N];
long long add[N];
int v[505];
int gcd(int a,int b){
  int r;
  if(a<b)
    swap(a,b);
  while(b!=0){
    r=a%b;
    a=b;
    b=r;
  }
  return a;
}
int main()
{
    FILE*fin,*fout;
    fin=fopen("indep.in","r");
    fout=fopen("indep.out","w");
    int n;
    cmmdc[0]=1;
    fscanf(fin,"%d",&n);
    for(int i=1;i<=n;i++){
      fscanf(fin,"%d",&v[i]);
      memset(add,0,sizeof(add));
      for(int j=N-1;j>=0;j--){
        add[gcd(j,v[i])]+=1LL*cmmdc[j];
      }
      for(int j=N-1;j>=0;j--){
        cmmdc[j]+=1LL*add[j];
      }
    }
    fprintf(fout,"%lld",cmmdc[1]);
    return 0;
}