Cod sursa(job #2720064)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 10 martie 2021 16:00:15
Problema Puteri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <bits/stdc++.h>

#define NMAX 100005
using namespace std;

ifstream fin("puteri.in");
ofstream fout("puteri.out");

typedef long long ll;
int a[NMAX], b[NMAX], c[NMAX], mod[130], fr[130][130][130], n;

ll solve(int i){
    memset(mod, 0, sizeof(mod));
    memset(fr, 0, sizeof(fr));
    for(int j = 0; j <= 128; ++j)
        mod[j] = j % i;
    ll ans = 0;
    int axA, axB, axC;
    for(int k = 1; k <= n; ++k){
        axA = mod[i - mod[a[k]]];
        axB = mod[i - mod[b[k]]];
        axC = mod[i - mod[c[k]]];

        if(axA <= 64 && axB <= 64 && axC <= 64)
            ans += fr[axA][axB][axC];
        fr[mod[a[k]]][mod[b[k]]][mod[c[k]]]++;
    }
    return ans;
}

int main()
{
    fin >> n;

    for(int i = 1; i <= n; ++i)
        fin >> a[i] >> b[i] >> c[i];

    ll rez = 0;
    for(int i = 2; i <= 128; ++i){
        int semn = -1;
        int ax = i;
        for(int j = 2; j <= i; ++j){
            int cn = 0;
            while(ax % j == 0){
                ++cn;
                ax /= j;
            }

            if(cn > 1)
                semn = 0;
            if(cn == 1)
                semn *= -1;
        }

        if(semn != 0)
            rez += semn * solve(i);
    }

    fout << rez << '\n';
    return 0;
}