Pagini recente » Cod sursa (job #2656653) | Cod sursa (job #2968813) | Cod sursa (job #312003) | Cod sursa (job #709143) | Cod sursa (job #1235378)
#include <stdio.h>
#define MAX 1000000000
#define MAXN 500
#define MAXEL 1000
#define MAXL 200
int v[MAXN];
int d[MAXEL + 1][MAXL], len[MAXEL + 1];
int cmmdc(int a, int b){
int r;
while(b > 0){
r = a % b;
a = b;
b = r;
}
return a;
}
void add(int *v1, int l1, int *v2, int *l2){
int i, max = l1;
if(max < *l2) max = *l2;
for(i = 0; i < max; i++) v2[i] += v1[i];
i = 0;
while(i < max || v2[i] != 0){
v2[i + 1] += v2[i] / MAX;
v2[i] %= MAX;
if(i > *l2) *l2 = i;
i++;
}
if(v2[*l2] != 0) (*l2)++;
}
int main(){
FILE *in = fopen("indep.in", "r");
int n, i, j;
fscanf(in, "%d", &n);
for(i = 0; i < n; i++){
fscanf(in, "%d", &v[i]);
}
fclose(in);
int a, unu[1] = {1};
for(i = 0; i < n; i++){
for(j = 1; j <= MAXEL; j++){
a = cmmdc(j, v[i]);
add(d[j], len[j], d[a], &len[a]);
}
add(unu, 1, d[v[i]], &len[v[i]]);
}
FILE *out = fopen("indep.out", "w");
for(i = 0; i < len[1]; i++){
fprintf(out, "%d", d[1][i]);
}
if(len[1] == 0) fputc('0', out);
fclose(out);
return 0;
}