Cod sursa(job #2582940)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 17 martie 2020 15:34:32
Problema Puteri Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("puteri.in");
ofstream g("puteri.out");

int n,a[100005],b[100005],c[100005],l[130];
int din[65][65][65],semn[130];
bool ciur[130];
long long rasp=0;

int sol(int mod)
 {
  int x,y,z;
  long long s=0;
  for(int i=0;i<=64;i++)
   for(int j=0;j<=64;j++)
    for(int z=0;z<=64;z++)
      din[i][j][z]=0;
  for(int i=0; i<=128; i++)
    l[i]=i%mod;
  for(int i=1;i<=n;i++)
   {
    x=l[mod-l[a[i]]];
    y=l[mod-l[b[i]]];
    z=l[mod-l[c[i]]];
    if(x<=64&&y<=64&&z<=64)
      s+=din[x][y][z];
    din[l[a[i]]][l[b[i]]][l[c[i]]]++;
   }
  return s;
 }
int main()
{
f>>n;
for(int i=1;i<=n;i++)
  f>>a[i]>>b[i]>>c[i];
for(int i=1;i<=128;i++)
 semn[i]=1;
for(int i=2;i<=128;i++)
 {
  if(ciur[i]==0)
   {
    for(int j=i;j<=128;j+=i)
     {
      semn[j]*=-1;
      ciur[j]=1;
     }
    for(int j=i*i;j<=128;j+=i*i)
     semn[j]=0;
   }
  if(semn[i]!=0)
    rasp-=semn[i]*sol(i);
 }
g<<rasp;
}