Cod sursa(job #2094316)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 25 decembrie 2017 17:42:17
Problema Indep Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("indep.in");
ofstream out("indep.out");
int cmmdc[1001][100];
int gcd(int a,int b)
{
    if(b==0)
        return a;
    return gcd(b,a%b);
}
int gcdd(int a,int b)
{
    if(a<b)
        return gcd(b,a);
    return gcd(a,b);
}
void suma(int a[],int b[])
{
    int r=0,i;
    for(i=1;i<=a[0]||i<=b[0]||r;i++)
    {
        r+=a[i]+b[i];
        a[i]=r%100000;
        r/=100000;
    }
    a[0]=i-1;
}
int main()
{
    int n,i,nr;
    in>>n;
    cmmdc[0][0]=cmmdc[0][1]=1;
    for(i=1;i<1001;i++)
        cmmdc[i][0]=1;
    while(n--)
    {
        in>>nr;
        for(i=1;i<=1000;i++)
            suma(cmmdc[gcdd(nr,i)],cmmdc[i]);
        suma(cmmdc[nr],cmmdc[0]);
    }
    for(i=cmmdc[1][0];i>0;i--)
       out<<cmmdc[1][i];
    return 0;
}