Pagini recente » Cod sursa (job #450834) | Cod sursa (job #263047) | Cod sursa (job #1918128) | Cod sursa (job #3190307) | Cod sursa (job #1340967)
#include <cstdio>
#include <cstring>
FILE*f=fopen("indep.in","r");
FILE*h=fopen("indep.out","w");
int rez[2][1001][201];
int n;
int divi(int a,int b){
int r=a%b;
while ( r ){
a=b;
b=r;
r=a%b;
}
return b;
}
void add(int A[], int B[]){
int i,t=0;
for ( i=1;i<=A[0]||i<=B[0]||t;++i,t/=1000000000)
A[i]=(t+=A[i]+B[i])%1000000000;
A[0]=i-1;
}
int main(){
fscanf(f,"%d",&n);
int calc=1;
for ( int i=0;i<n;++i,calc=1-calc ){
int x;
fscanf(f,"%d",&x);
int v[10];
v[0]=1;
v[1]=1;
add(rez[calc][x],v);
if ( i ){
for ( int j=1;j<=1000;++j ){
add(rez[calc][j],rez[1-calc][j]);
add(rez[calc][divi(j,x)],rez[1-calc][j]);
}
}
else{
rez[calc][x][0]=1;
rez[calc][x][1]=1;
}
memset(rez[1-calc],0,sizeof(rez[1-calc]));
}
fprintf(h,"%d",rez[1-calc][1][rez[1-calc][1][0]]);
for ( int i=rez[1-calc][1][0]-1;i>0;--i )
fprintf(h,"%.9d",rez[1-calc][1][i]);
return 0;
}