Pagini recente » Cod sursa (job #1413507) | Cod sursa (job #1853473) | Cod sursa (job #413096) | Cod sursa (job #2473415) | Cod sursa (job #2580734)
#include<bits/stdc++.h>
using namespace std;
struct HugeN{
vector<int> nr;
HugeN (){
nr.clear();
}
HugeN(int x){
nr.clear();
while(x>0){
nr.push_back(x%10);
x/=10;
}
}
};
HugeN add(HugeN a,HugeN b){
int t=0;
HugeN rez(0);
for(int i=0;i<a.nr.size() || i<b.nr.size() || t>0;i++){
if(i<a.nr.size()){
t+=a.nr[i];
}
if(i<b.nr.size()){
t+=b.nr[i];
}
rez.nr.push_back(t%10);
t/=10;
}
return rez;
}
HugeN mult(HugeN a,int b){
int t=0;
HugeN rez(0);
for(int i=0;i<a.nr.size() || t>0;i++){
if(i<a.nr.size()){
t+=a.nr[i]*b;
}
rez.nr.push_back(t%10);
t/=10;
}
return rez;
}
const int N=1005;
HugeN d[N];
int main()
{
FILE*fin,*fout;
fin=fopen("indep.in","r");
fout=fopen("indep.out","w");
int n;
fscanf(fin,"%d",&n);
d[0]=1;
for(int i=1;i<=n;i++){
int x;
fscanf(fin,"%d",&x);
for(int j=1;j<N;j++){
if(!d[j].nr.empty()){
int g=__gcd(x,j);
d[g]=add(d[j],d[g]);
}
}
d[x]=add(d[x],d[0]);
}
for(int i=d[1].nr.size()-1;i>=0;i--)
fprintf(fout,"%d",d[1].nr[i]);
if(d[1].nr.empty()){
fprintf(fout,"0");
}
return 0;
}