Pagini recente » Cod sursa (job #3328283) | Cod sursa (job #3352937) | Cod sursa (job #3352290) | Cod sursa (job #3352284) | Cod sursa (job #3315074)
#include <fstream>
#define int long long
using namespace std;
ifstream cin("indep.in");
ofstream cout("indep.out");
int f[1005][155];
int v[505];
int cmmdc(int a, int b)
{
int r;
while(b>0)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void adunare(int x, int y)
{
int r=0, sum=0, mxi;
mxi=max(f[x][0], f[y][0]);
for(int i=1; i<=mxi; i++)
{
sum=f[x][i]+f[y][i]+r;
r=sum/10;
f[x][i]=sum%10;
}
f[x][0]=mxi;
if(r>0)
{
f[x][0]++;
f[x][mxi+1]=r;
}
}
signed main()
{
int n, cnt=0;
cin>>n;
f[0][1]=f[0][0]=1;
for(int i=1; i<=n; i++)
{
cin>>v[i];
for(int j=1; j<=1000; j++)
{
cnt=cmmdc(j, v[i]);
adunare(cnt, j);
}
adunare(v[i], 0);
}
for(int i=f[1][0]; i>=1; i--)
{
cout<<f[1][i];
}
return 0;
}