Pagini recente » Cod sursa (job #917470) | Cod sursa (job #2984911) | Cod sursa (job #1872533) | Cod sursa (job #673226) | Cod sursa (job #494973)
Cod sursa(job #494973)
#include<fstream>
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
short int a[501][1001][200],v[501],n;
void add(short int A[], short int B[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
int cmmdc(int x, int y)
{
int r;
while(x*y)
{
r=x%y;
x=y;
y=r;
}
return x;
}
int main()
{
int i,j;
f>>n;
for(i=1;i<=n;i++)
{
f>>v[i];
a[i][v[i]][0]=1;
a[i][v[i]][1]=1;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=1000;j++)
add(a[i][cmmdc(v[i],j)],a[i-1][j]);
for(j=1;j<=1000;j++)
add(a[i][j],a[i-1][j]);
}
for(i=a[n][1][0];i>=1;i--)
g<<a[n][1][i];
return 0;
}