Pagini recente » Cod sursa (job #2195571) | Cod sursa (job #40120) | Cod sursa (job #77275) | Cod sursa (job #2889678) | Cod sursa (job #2091210)
#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;
}