Pagini recente » Cod sursa (job #2436966) | Cod sursa (job #1444342) | Cod sursa (job #3182950) | Cod sursa (job #2366979) | Cod sursa (job #1308825)
#include <fstream>
#include <cstring>
#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;
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]));
}
for ( int i = D[1-Line][1][0]; i > 0; --i )
os << D[1-Line][1][i];
is.close();
os.close();
}