Pagini recente » Cod sursa (job #48939) | Cod sursa (job #3224585) | Cod sursa (job #1031632) | Cod sursa (job #1190428) | Cod sursa (job #165311)
Cod sursa(job #165311)
#include<stdio.h>
#define INPUT "indep.in"
#define OUTPUT "indep.out"
#define NMAX 501
FILE *fin = fopen(INPUT, "r"), *fout=fopen(OUTPUT, "w");
int N;
int a[ NMAX ];
long long sum[ NMAX ][ NMAX ];
void readValues();
void solveFunction();
inline int euclid(int, int);
int main()
{
readValues();
solveFunction();
fclose(fin);
fclose(fout);
return 0;
}
void readValues()
{
fscanf(fin, "%d", &N);
for(int i = 0; i < N; ++i)
fscanf(fin, "%d", &a[ i ]);
}
void solveFunction()
{
long long sumFinal, sumNivel;
long contCur;
sumFinal = 0;
sumNivel = 0;
for(int i = 1; i < N; ++i)
{
contCur = 0;
for(int j = 0; j < i; ++j)
{
if(euclid(a[ i ], a[ j ]) == 1)
++contCur;
}
sum[ 1 ][ i ] = contCur;
sumFinal += contCur;
}
for(int i = 2; i < N; ++i)
{
sumNivel = 0;
for(int j = i; j < N; ++j)
{
contCur = 0;
for(int k = 0; k < j; ++k)
contCur += sum[ i - 1][ k ];
sum[ i ][ j ] = contCur;
sumNivel += contCur;
}
sumFinal += sumNivel;
}
fprintf(fout, "%lld\n", sumFinal);
}
inline int euclid(int A, int B)
{
if(!B) return A;
else return euclid(B, A%B);
}