Cod sursa(job #1004520)
| Utilizator | Data | 2 octombrie 2013 21:57:20 | |
|---|---|---|---|
| Problema | Indep | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <fstream>
using namespace std;
const int Nmax = 505;
int N, v[ Nmax ],cmdc[ Nmax ],sols[ Nmax ];
int ans = 0;
int cmmdc (int a,int b)
{
if(b)return cmmdc (b,a%b);
return a;
}
int main()
{
ifstream fin("indep.in");
ofstream fout("indep.out");
fin >> N;
for(int i=1;i<=N;++i)
fin>>v[i];
cmdc[1] = v[1];
for(int i=2;i<=N;++i)
{
cmdc[i] = cmmdc(cmdc[i-1],v[i]);
sols[cmdc[i]] ++;
}
for(int i=1;i<=N;++i)
ans += sols[i]*(sols[i]+1)/2;
fout<<ans;
return 0;
}
