Pagini recente » Cod sursa (job #2129002) | Cod sursa (job #779360) | Cod sursa (job #2728887) | Cod sursa (job #3220641) | Cod sursa (job #1235419)
#include <stdio.h>
#define MOD 10
#define MAXEL 1000
#define MAXL 180
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] / MOD;
v2[i] %= MOD;
if(i > *l2) *l2 = i;
i++;
}
if(v2[*l2] != 0) (*l2)++;
}
int main(){
FILE *in = fopen("indep.in", "r");
int n, i, j, a, x, unu[1] = {1};
fscanf(in, "%d", &n);
for(i = 0; i < n; i++){
fscanf(in, "%d", &x);
for(j = 1; j <= MAXEL; j++){
a = cmmdc(j, x);
add(d[j], len[j], d[a], &len[a]);
}
add(unu, 1, d[x], &len[x]);
}
FILE *out = fopen("indep.out", "w");
for(i = len[1] - 1; i >= 0; i--){
fputc(d[1][i] + '0', out);
}
if(len[1] == 0) fputc('0', out);
fclose(out);
return 0;
}