Pagini recente » Cod sursa (job #2974873) | Cod sursa (job #373662) | Cod sursa (job #2301227) | Cod sursa (job #2640291) | Cod sursa (job #2698380)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("indep.in");
ofstream cout("indep.out");
const int vmax = 1e3;
int gc[vmax + 5][vmax];
int n;
void init(){
gc[0][0] = 1;
gc[0][1] = 1;
}
void add(int a[], int b[]){
int r = 0;
for(int i = 1; i <= max(a[0], b[0]); i++){
int t = r + a[i] + b[i];
r = t / 10;
a[i] = t % 10;
}
a[0] = max(a[0], b[0]);
if(r)
a[++a[0]] = r;
}
void read_and_calc(){
cin >> n;
while(n--){
int nr;
cin >> nr;
for(int pv = 1; pv <= vmax; pv++)
if(gc[pv][0]){
int gcd = __gcd(pv, nr);
add(gc[gcd], gc[pv]);
}
add(gc[nr], gc[0]);
}
}
void answer(){
if(!gc[1][0])
cout << 0;
else
for(int i = gc[1][0]; i >= 1; i--)
cout << gc[1][i];
}
int main()
{
init();
read_and_calc();
answer();
return 0;
}