Cod sursa(job #1657465)
| Utilizator | Data | 20 martie 2016 15:12:41 | |
|---|---|---|---|
| Problema | Indep | Scor | 25 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <stdio.h>
using namespace std;
int n,nr;
int t[510];
long long int dp[510][1010];
inline int gcd(int a,int b)
{
if (b==0) return a; else
return gcd(b,a%b);
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d",&t[i]);
for (int i=1;i<=n;i++) {
for (int j=1;j<=1000;j++) {
dp[i][j]=dp[i][j]+dp[i-1][j];
dp[i][gcd(j,t[i])]=dp[i][gcd(j,t[i])]+dp[i-1][j];
}
dp[i][t[i]]++;
}
printf("%lld",dp[n][1]);
return 0;
}
