Cod sursa(job #1585797)

Utilizator claudiuarseneClaudiu Arsene claudiuarsene Data 31 ianuarie 2016 14:46:30
Problema Indep Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>

const int A=1010;
const int B=30;
int nr;
int v[A][B];
const int baza = 100000000;
int unu[B];

int cmmdc(int a,int b) {
    int r;

    while(b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}

void adn(int v[B],int b[B])
{
    int i=1,t=0;
    for(; i<=v[0] || i<=b[0] || t!=0; ++i,t=t/baza)
    {
        t+=v[i]+b[i];
        v[i]=t%baza;
    }
    v[0]=i-1;
}

void scr(int v[30])
{
    printf("%d",v[v[0]]);
    for(int i=v[0]-1;i>0;--i)
        printf("%.8d",v[i]);
}

int main() {
    freopen("indep.in","r",stdin);
    freopen("indep.out","w",stdout);
        scanf("%d",&nr);
    int x;
    unu[0]=1;
    unu[1]=1;
    for(int i=1;i<1001;++i)
        v[i][0] = 1;
    for(int i=0;i<nr;++i) {
        scanf("%d",&x);
    for(int j=1;j<1001;++j)
        adn(v[cmmdc(x,j)],v[j]);
        adn(v[x],unu);
    }
    scr(v[1]);
    return 0;
}