Cod sursa(job #1723192)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 29 iunie 2016 23:30:49
Problema Indep Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<cstdio>
#define BASE 1000000
#define MAXDIGITS 50
#define MAXVAL 1010
using namespace std;
int answer[MAXVAL][MAXDIGITS],one[MAXDIGITS];
int gcd(int a,int b){
    int r;
    while(b>0){
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
void Add(int a[MAXDIGITS],int b[MAXDIGITS]){
    int i,c=0;
    for(i=1;i<=a[0]||i<=b[0]||c>0;i++){
        a[i]=a[i]+b[i]+c;
        c=a[i]/BASE;
        a[i]%=BASE;
    }
    a[0]=i-1;
}
int main(){
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
    int n,i,j,x;
    scanf("%d",&n);
    one[0]=one[1]=1;
    for(i=1;i<=n;i++){
        scanf("%d",&x);
        for(j=1;j<=1000;j++)
            Add(answer[gcd(x,j)],answer[j]);
        Add(answer[x],one);
    }
    printf("%d",answer[1][answer[1][0]]);
    for(i=answer[1][0]-1;i>=1;i--)
        printf("%.6d",answer[1][i]);
    return 0;
}