Pagini recente » Cod sursa (job #1889910) | Cod sursa (job #2756404) | Cod sursa (job #552422) | Cod sursa (job #2571897) | Cod sursa (job #2927605)
#include <bits/stdc++.h>
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
const int nmax=1005,baza=1000;
int n,dp[nmax][105],v[3],x;
void adun(int a[105],int b[105])
{
int i, r = 0;
for(i = 1; i <= a[0] or i <= b[0] or r > 0; i++)
{
a[i] = a[i] + b[i] + r;
r = a[i] / baza;
a[i] %= baza;
}
a[0] = i - 1;
}
int cmmdc(int a,int b)
{
int c;
while(b)
{
c = a % b;
a = b;
b = c;
}
return a;
}
int main()
{
f >> n;
v[0] = v[1] = 1;
for(int i = 1; i <= n; i++)
{
f >> x;
for(int j = 1; j <= 1000; j++)
{
adun(dp[cmmdc(x,j)],dp[j]);
}
adun(dp[x],v);
}
g << dp[1][dp[1][0]];
for(int i = dp[1][0] - 1; i >= 1; i--)
{
if(dp[1][i] < 10) g << "00";
else if(dp[1][i] < 100) g << "0";
g << dp[1][i];
}
return 0;
}