Cod sursa(job #1824102)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 7 decembrie 2016 12:39:13
Problema Indep Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
int n,v[505],unu[1005],dp[1005][1005];
inline int cmmdc(int a,int b)
{
    if(!b)
      return a;
    return cmmdc(b,a%b);
}
void add(int A[],int B[])
{
    int t=0,i;
    for(i=1;i<=A[0]||i<=B[0]||t;i++,t/=10000)
      A[i]=(t+=A[i]+B[i])%10000;
    A[0]=i-1;
}
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
      f>>v[i];
    unu[0]=unu[1]=1;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<1005;j++)
          add(dp[cmmdc(j,v[i])],dp[j]);
        add(dp[v[i]],unu);
    }
    if(!dp[1][dp[1][0]])
      g<<0;
    else
      for(int j=dp[1][0];j;j--)
        g<<dp[1][j];
    return 0;
}