Cod sursa(job #2091210)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 19 decembrie 2017 12:12:46
Problema Indep Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fi("indep.in");
ofstream fo("indep.out");

char ciur[1001];
int cmmdc[1001][1001];
long long d[2][1001];

inline int func(int a, int b){
  int r;
  while(b > 0){
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}

int main()
{
  for(int i = 1; i <= 1000; i++)
    for(int j = 1; j <= 1000; j++){
      if(j < i)
        cmmdc[i][j] = cmmdc[j][i];
      else
        cmmdc[i][j] = func(i, j);
    }
  int n, x;
  fi >> n;
  int aux = 0;
  for(int i = 0; i < n; i++){
    fi >> x;
    for(int j = 1; j <= 1000; j++)
      d[aux][j] = d[1 - aux][j];
    for(int j = 1; j <= 1000; j++)
      d[aux][cmmdc[x][j]] += d[1 - aux][j];
    d[aux][x]++;
    aux = 1 - aux;
  }
  fo << d[1 - aux][1];
  return 0;
}