Pagini recente » Cod sursa (job #1668283) | Cod sursa (job #910679) | Cod sursa (job #1543292) | Cod sursa (job #2396770) | Cod sursa (job #1405170)
#include <fstream>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
int N;
long long dp[505][1005]; // cate subsiruri din primele i elemente au cmmdc = j
int Euclid(int a, int b)
{
if (!b)
return a;
return Euclid(b, a % b);
}
int main()
{
fin >> N;
for (int i = 1; i <= N; ++i)
{
int x;
fin >> x;
dp[i][x] = 1;
for (int j = 1; j <= 1000; ++j)
{
dp[i][Euclid(x, j)] += dp[i - 1][j];
dp[i][j] += dp[i - 1][j]; // aici intra si dp[i][Euclid(x, j)] += dp[i - 1][Euclid(x, j)]
}
}
fout << dp[N][1] << '\n';
fin.close();
fout.close();
return 0;
}