Pagini recente » Cod sursa (job #2086481) | Cod sursa (job #2155735) | Cod sursa (job #2116110) | Cod sursa (job #905690) | Cod sursa (job #848770)
Cod sursa(job #848770)
#include <fstream>
#define MAX 505
#define RMAX 1005
using namespace std;
int N, V[MAX], ONE[RMAX], dp[RMAX][RMAX];
inline int cmmdc(int a, int b)
{
if(!b) return a;
return cmmdc(b, a % b);
}
void add(int A[], int B[])
{
int t = 0, i;
for(i = 1; i <= A[0] || i <= B[0] || t; i++, t /= 10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
int main()
{
ifstream in("indep.in"); in>>N;
for(int i = 1; i <= N; i++) in>>V[i];
in.close(); ONE[0] = ONE[1] = 1;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j < RMAX; j++)
add(dp[cmmdc(j, V[i])], dp[j]);
add(dp[V[i]], ONE);
}
ofstream out("indep.out");
for(int j = dp[1][0]; j; j--) out<<dp[1][j];
if(dp[1][0] == 0) out<<"0\n";
out.close();
return 0;
}