Cod sursa(job #3305032)

Utilizator lucaje123Vartolomei Luca lucaje123 Data 29 iulie 2025 15:40:25
Problema Indep Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <string.h>
using namespace std;

ifstream cin("indep.in");
ofstream cout("indep.out");

int n, v[505];
int dp[1005][1005];

void adunare(int x, int y){
    dp[x][0]=max(dp[x][0], dp[y][0]);
    int t=0;
    for(int i=1;i<=dp[x][0];i++){
        t+=dp[x][i]+dp[y][i];
        dp[x][i]=t%10;
        t=t/10;
    }
    while(t){
        dp[x][++dp[x][0]]=t%10;
        t=t/10;
    }
}

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    dp[0][0]=1, dp[0][1]=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=1000;j++){
            int gcd=__gcd(j, v[i]);
            adunare(gcd, j);
        }
        adunare(v[i], 0);
    }
    if(dp[1][0]==0){
        cout<<0;
    }
    else{
        for(int i=dp[1][0];i>=1;i--){
            cout<<dp[1][i];
        }
    }
}