Cod sursa(job #2102758)

Utilizator Bodo171Bogdan Pop Bodo171 Data 9 ianuarie 2018 14:32:35
Problema Puteri Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;
const int nmax=100005;
const int nm=64;
int ap[64][64][64];
int a[nmax],b[nmax],c[nmax],d[70];
long long pairs,tot;
int n,i,j,mod,x,y,z;
int e(int num)
{
    return num%mod;
}
int inv(int num)
{
    return mod-num-mod*(num==0);
}
int main()
{
    ifstream f("puteri.in");
    ofstream g("puteri.out");
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i]>>b[i]>>c[i];
    }
    for(i=2;i<=nm;i++)
        if(d[i]==0)
    {
        for(j=i;j<=nm;j+=i)
        {
            if(d[j]!=-1)d[j]++;
            if(j%(i*i)==0) d[j]=-1;
        }
    }
    for(mod=2;mod<=nm;mod++)
        if(d[mod]!=-1)
    {
        pairs=0;
        for(i=1;i<=n;i++)
        {
            x=e(a[i]);y=e(b[i]);z=e(c[i]);
            pairs+=1LL*ap[inv(x)][inv(y)][inv(z)];
            ap[x][y][z]++;
        }
        for(i=1;i<=n;i++)
        {
            x=e(a[i]);y=e(b[i]);z=e(c[i]);
            ap[x][y][z]--;
        }
        if(d[mod]%2) tot+=pairs;
        else tot-=pairs;
    }
    g<<tot;
    return 0;
}