Pagini recente » Cod sursa (job #268447) | Cod sursa (job #821459) | Cod sursa (job #1181867) | Cod sursa (job #74092) | Cod sursa (job #1308833)
#include <fstream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
ifstream is("indep.in");
ofstream os("indep.out");
int N, D[2][1001][200];
int Line, x;
int X[] = {1,1};
void Add(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0] || i <= B[0] || t; i++, t /= 1000000000)
A[i] = (t += A[i] + B[i]) % 1000000000;
A[0] = i - 1;
}
int main()
{
is >> N; Line = 1;
freopen("indep.out","w",stdout);
for ( int i = 1; i <= N; ++i, Line = 1 - Line )
{
is >> x;
Add(D[Line][x], X);
for ( int j = 1; j <= 1000; ++j )
{
Add(D[Line][__gcd(j,x)], D[1-Line][j]);
Add(D[Line][j], D[1-Line][j]);
}
memset(D[1-Line], 0, sizeof(D[1-Line]));
}
printf("%d",D[1-Line][1][D[1-Line][1][0]]);
for ( int i = D[1-Line][1][0]-1; i > 0; --i )
printf("%.9d", D[1-Line][1][i]);
is.close();
os.close();
}