Pagini recente » Cod sursa (job #3345378) | Cod sursa (job #3315069) | Cod sursa (job #3344946) | Cod sursa (job #3324327) | Cod sursa (job #3348532)
#include <bits/stdc++.h>
using namespace std;
#define USE_STD_IO 0
#if USE_STD_IO
#define fin cin
#define fout cout
#else
ifstream fin("indep.in");
ofstream fout("indep.out");
#endif // USE_STD_IO
typedef int NrMare[1002];
const int BAZA = 1000;
NrMare d[1002], unu;
int n, i, j, a;
static inline int Cmmdc(int a, int b) {
if(0 == a) return b;
if(0 == b) return a;
int rest;
do {
rest = a % b;
a = b;
b = rest;
}
while(0 != b);
return a;
}
static inline void Add(NrMare a, NrMare b) {
int i = 1, t = 0;
while(i <= a[0] || i <= b[0] || t) {
t += a[i] + b[i];
a[i] = t % BAZA;
t /= BAZA;
i++;
}
a[0] = i - 1;
}
int main() {
if(USE_STD_IO) ios_base::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
fin >> n;
unu[0] = unu[1] = 1;
for(i = 1; i <= n; i++) {
fin >> a;
for(j = 1; j <= 1000; j++) {
Add(d[Cmmdc(j, a)], d[j]);
}
Add(d[a], unu);
}
if(d[1][0] == 0) fout << 0;
else {
fout << d[1][d[1][0]];
for(i = d[1][0] - 1; i >= 1; i--) {
fout << setw(3) << setfill('0') << d[1][i];
}
}
return 0;
}