Pagini recente » Cod sursa (job #2357490) | Cod sursa (job #1243939) | Cod sursa (job #2328364) | Cod sursa (job #170013) | Cod sursa (job #866085)
Cod sursa(job #866085)
#include <fstream>
using namespace std;
ifstream fin("indep.in");
ofstream fout("indep.out");
int N, v[512], ans;
unsigned long long dp[512][1024];
int G[1002][1002];
int gcd(int a,int b) {
if(!b) return a;
return gcd(b,a%b);
}
int main()
{
fin>>N;
int valMax = 0;
for(int i = 1;i <= N;++i) {
fin>>v[i];
valMax = max(valMax,v[i]);
}
for(int i = 1;i <= valMax;i++) {
for(int j = 1;j <= i;j++) {
G[i][j] = G[j][i] = gcd(i,j);
}
}
for(int i = 1;i <= N;i++) {
for(int j = 1;j <= v[i];j++) {
dp[i][G[j][v[i]]] += dp[i - 1][j] + dp[i - 1][G[j][v[i]]];
}
dp[i][v[i]] += 1;
}
fout<<dp[N][1]<<'\n';
return 0;
}