Cod sursa(job #25254)

Utilizator crawlerPuni Andrei Paul crawler Data 4 martie 2007 11:38:22
Problema Puteri Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 9-a si gimnaziu Marime 1.02 kb
#include <stdio.h>

#define fin "puteri.in"
#define fout "puteri.out"
#define FOR(i,a,b) for(i=(a);i<=(b);++i)
#define VEC(a) a[100001]


char v[65][65][65], x[65][65][65], VEC(a), VEC(b), VEC(c), cmmdc[65][65];


int CMMDC(int x,int y)
 {
  if(y == 0)
   return x;
    else
   return CMMDC(y,x%y);
 }


int good(int A,int B, int C)
 {
  if(A == 0) { if(B == 0) A= B= C; else A= B*C; }
  if(B == 0) { if(C == 0) B= C= A; else B= A*C; }

  if(cmmdc[cmmdc[A][B]][C] != 1)
   return 1;
    else
   return 0;
 }

int main()
 {
  freopen(fin,"r",stdin);
  freopen(fout,"w",stdout);


  int i,j,k,n, S=0, A,B,C, CM;

  scanf("%i", &n);

  FOR(i,1,n)
   scanf("%i%i%i", &a[i], &b[i], &c[i]);



  //preproc

  FOR(i,0,64)
   FOR(j,i,64)
    cmmdc[i][j]= cmmdc[j][i]= CMMDC(i,j);

  
  FOR(i,0,64)
   FOR(j,0,64)
    FOR(k,0,64)
     v[i][j][k] = good(i,j,k);


  S=0;
  

  FOR(i,1,n)
   FOR(j,i+1,n)
    S+=v[a[i]+a[j]][b[i]+b[j]][c[i]+c[j]];

  printf("%i\n", S);

  return 0;
 }