Pagini recente » Istoria paginii runda/infoexpert | Cod sursa (job #855869) | Cod sursa (job #2472521) | Cod sursa (job #602953) | Cod sursa (job #2332884)
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1005;
int cmmdc[N][300];
int add[N][300];
int v[505];
int gcd(int a,int b){
int r;
if(a<b)
swap(a,b);
while(b!=0){
r=a%b;
a=b;
b=r;
}
return a;
}
void addnrm(int nra[],int nrb[]){
int transp=0,i;
for(i=1;i<=nra[0] || i<=nrb[0];i++){
nra[i]+=nrb[i]+transp;
transp=nra[i]/10;
nra[i]%=10;
}
while(transp>0){
nra[i]+=transp;
transp=nra[i]/10;
nra[i]%=10;
i++;
}
nra[0]=i-1;
}
int main()
{
FILE*fin,*fout;
fin=fopen("indep.in","r");
fout=fopen("indep.out","w");
int n;
cmmdc[0][0]=1;
cmmdc[0][1]=1;
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
memset(add,0,sizeof(add));
for(int j=N-1;j>=0;j--){
if(cmmdc[j][0])
addnrm(add[gcd(j,v[i])],cmmdc[j]);
}
for(int j=N-1;j>=0;j--){
if(add[j][0])
addnrm(cmmdc[j],add[j]);
}
}
for(int i=cmmdc[1][0];i>0;i--){
fprintf(fout,"%d",cmmdc[1][i]);
}
return 0;
}