Pagini recente » Cod sursa (job #243406) | Cod sursa (job #3343200) | Cod sursa (job #3310200) | Cod sursa (job #1992856) | Cod sursa (job #3305032)
#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];
}
}
}