Pagini recente » Cod sursa (job #2064315) | Cod sursa (job #815801) | Cod sursa (job #217951) | Cod sursa (job #2492761) | Cod sursa (job #1049675)
#include <fstream>
#include <vector>
using namespace std;
const int MAX_N = 502;
const int MAX_VAL = 1001;
int N;
int v[MAX_N];
long long dp[MAX_N][MAX_VAL];
void read() {
ifstream f("indep.in");
f >> N;
for(int i = 1; i <= N; ++i)
f >> v[i];
f.close();
}
inline int gcd(int a, int b) {
int r;
while(b) {
r = a % b;
a = b;
b = r;
}
return a;
}
void solve() {
dp[1][v[1]] = 1;
for(int i = 2; i <= N; ++i) {
for(int j = 1; j < MAX_VAL; ++j) {
int c = gcd(j, v[i]);
dp[i][c] += dp[i - 1][j];
}
for(int j = 1; j < MAX_VAL; ++j)
dp[i][j] += dp[i - 1][j];
++dp[i][v[i]];
}
}
void write() {
ofstream g("indep.out");
g << dp[N][1] << "\n";
g.close();
}
int main() {
read();
solve();
write();
return 0;
}