Pagini recente » Cod sursa (job #2169220) | Cod sursa (job #1155775) | Cod sursa (job #2590281) | Cod sursa (job #1831477) | Cod sursa (job #2605789)
#include <fstream>
using namespace std;
ifstream cin ("indep.in");
ofstream cout ("indep.out");
struct NU{
int v[3005];
};
NU dp[1005];
void dani(int v1[], int v2[])
{
int c = 0, elem, i;
for (i = 1; i <= max(v1[0], v2[0]); i++)
{
elem = c + v1[i] + v2[i];
c = elem / 10;
v1[i] = elem % 10;
}
v1[0] = max(v1[0], v2[0]);
while (c)
{
v1[++v1[0]] = c % 10;
c /= 10;
}
}
int main()
{
int n, i, nr;
cin >> n;
dp[0].v[0] = dp[0].v[1] = 1;
for (i = 1; i <= n; i++)
{
cin >> nr;
for (int j = 1; j <= 1000; j++)
{
int a, b, r;
a = nr;
b = j;
while (b)
{
r = a % b;
a = b;
b = r;
}
if (dp[j].v[0])
dani (dp[a].v, dp[j].v);
}
dani (dp[nr].v, dp[0].v);
}
if (dp[1].v[0])
{
for (i = dp[1].v[0]; i > 0; i--)
cout << dp[1].v[i];
}
else
cout << 0;
return 0;
}