Cod sursa(job #866085)

Utilizator ELHoriaHoria Cretescu ELHoria Data 27 ianuarie 2013 15:25:10
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#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;
}