Pagini recente » Cod sursa (job #1593444) | Cod sursa (job #2374725) | Cod sursa (job #1386271) | Cod sursa (job #2711070) | Cod sursa (job #2321144)
#include <bits/stdc++.h>
const int bz=1e9;
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
int n,i,j,a;
vector<int> dyn[1010];
vector<int> operator+(vector<int> a,vector<int> b)
{
vector<int> c;
int ovr=0;
for(int i=0;i<=max(a.size(),b.size())+10;i++)
{
c.push_back(ovr);
if(i<a.size())c[i]+=a[i];
if(i<b.size())c[i]+=b[i];
ovr=c[i]/bz;
c[i]%=bz;
}
while((!c[c.size()-1])&&(c.size()>1))
c.pop_back();
return c;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>a;
for(j=1;j<=1000;j++)
{
int x=__gcd(j,a);
dyn[x]=dyn[x]+dyn[j];
}
vector<int> v={1};
dyn[a]=dyn[a]+v;
}
g<<dyn[1][dyn[1].size()-1];
for(i=dyn[1].size()-2;i>=0;i--)
{
int a[20];
for(j=1;j<=9;j++)
{
a[j]=dyn[1][i]%10;
dyn[1][i]/=10;
}
for(j=9;j>=1;j--)
g<<a[j];
}
return 0;
}