Pagini recente » Cod sursa (job #1548441) | Cod sursa (job #203181) | Cod sursa (job #591114) | Cod sursa (job #1433499) | Cod sursa (job #2824282)
#include <bits/stdc++.h>
using namespace std;
inline void Open(const string Name) {
#ifndef ONLINE_JUDGE
(void)!freopen((Name + ".in").c_str(), "r", stdin);
(void)!freopen((Name + ".out").c_str(), "w", stdout);
#endif
}
const int base = 1000000000;
void add(int A[], int B[]) {
int i, t = 0;
for(i = 1; i <= A[0] || i <= B[0] || t; i++, t /= base)
A[i] = (t += A[i] + B[i]) % base;
A[0] = i - 1;
}
int dp[2][1001][21];
int a[501];
int N;
void solve() {
for(int i = 0;i <= 1;i++)
for(int j = 0;j <= 1000;j++)
dp[i][j][0] = 1;
cin >> N;
dp[0][0][1] = 1;
for(int i = 1;i <= N;i++) {
cin >> a[i];
for(int j = 0;j <= 1000;j++)
memcpy(dp[i & 1][j], dp[(i - 1) & 1][j], sizeof(dp[i & 1][j]));
for(int j = 0;j <= 1000;j++)
add(dp[i & 1][__gcd(j, a[i])], dp[(i - 1) & 1][j]);
}
cout << (dp[N & 1][1][0] == 0? 0 : dp[N & 1][1][dp[N & 1][1][0]]);
for(int i = dp[N & 1][1][0] - 1;i >= 1;i--) {
cout << setw(9) << setfill('0') << dp[N & 1][1][i];
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
Open("indep");
int T = 1;
for(;T;T--) {
solve();
}
return 0;
}