Cod sursa(job #2212798)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 14 iunie 2018 20:43:27
Problema Puteri Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<fstream>
using namespace std;
ifstream fi("puteri.in");
ofstream fo("puteri.out");
int n,i,j,k,ind,A[100005],B[100005],C[100005],Dp[130][130][130],a,b,c,g,nrd,x,val;
long long rez;
int main()
{
    fi>>n;
    for(i=1; i<=n; i++)
        fi>>A[i]>>B[i]>>C[i];
    for(i=2; i<=128; i++)
    {
        nrd=0;
        x=i;
        g=1;
        for(j=2; j*j<=x; j++)
        {
            if(x%j==0)
            {
                nrd++;
                x/=j;
                if(x%j==0)
                {
                    g=0;
                    break;
                }
            }
        }
        if(x>1)
            nrd++;
        if(g==0)
            continue;
        if(nrd%2)
            val=1;
        else
            val=-1;
        for(j=0; j<=i; j++)
            for(k=0; k<=i; k++)
                for(ind=0; ind<=i; ind++)
                    Dp[j][k][ind]=0;
        for(j=1; j<=n; j++)
        {
            a=(i-(A[j]%i))%i;
            b=(i-(B[j]%i))%i;
            c=(i-(C[j]%i))%i;
            rez=rez+1LL*val*Dp[a][b][c];
            Dp[A[j]%i][B[j]%i][C[j]%i]++;
        }
    }
    fo<<rez<<"\n";
    fi.close();
    fo.close();
    return 0;
}