Cod sursa(job #402173)

Utilizator mihaionlyMihai Jiplea mihaionly Data 23 februarie 2010 16:09:54
Problema Indep Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream f("indep.in");
ofstream g("indep.out");
#define nmax 505
int n,cm[nmax],sol,pre;
int A[nmax];
bool ok;
long long power(int n,int p)
 {
 unsigned long long sol=1;
 for (int i=0; (1<<i)<=p; i++)
 {
 if ((1<<i) & p )
    sol=(sol*n);
  n=(n*n);
  }
 return sol;
}
void read()
 {
 f>>n;
 for(int i=1;i<=n;i++) f>>A[i];
 }
int cmmdc(int a,int b)
 {
 if(b==0)
  return a;
 return cmmdc(b,a%b);
 }
int main()
 {
 read();
 int i,j;
 for(i=n;i>1;i--)
  for(j=i-1;j>=1;j--)
   if(cmmdc(A[i],A[j])==1)
    ++cm[i];
 for(i=1;i<n;i++)
  {
  ok=false;
  pre=0;
  for(j=i+1;j<=n;j++)
   {
   if(cmmdc(A[i],A[j])==1)
    {
	ok=true;
    sol+=power(2,n-2-cm[i]-pre);
	++pre;
    }
   }
  pre+=ok;
  }
 g<<sol;
 }