Pagini recente » Cod sursa (job #33850) | Cod sursa (job #2736236) | Cod sursa (job #737159) | Cod sursa (job #1588574) | Cod sursa (job #3263320)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("puteri.in");
ofstream cout("puteri.out");
struct nr
{
int a2,b3,c5;
} num[100001];
int n,a,b,c;
int numereprimediv(int nr)
{
int d=2,divprimi=0;
while(nr>1)
{
bool op=0;
while(nr%d == 0)
nr/=d,op=1;
if(op)
divprimi++;
d++;
if(d*d > nr)
d=nr;
}
return divprimi;
}
int elems[65][65][65],m[134];
int solve(int mod)
{
int new2,new3,new5;
int comb=0;
memset(elems,0,sizeof(elems));
for(int i=0; i<=128; i++)
m[i] = i%mod;
for(int i=1; i<=n; i++)
{
new2 = m[mod - m[num[i].a2]];
new3 = m[mod - m[num[i].b3]];
new5 = m[mod - m[num[i].c5]];
if(new2<=64 && new3<=64&&new5<=64)
comb += elems[new2][new3][new5];
elems[m[num[i].a2]][m[num[i].b3]][m[num[i].c5]]++;
}
return comb;
}
int main()
{
int rsp=0;
cin>>n;
for(int i=1; i<=n; i++)
{
int a2,b3,c5;
cin>>a2>>b3>>c5;
num[i]= {a2,b3,c5};
}
for(int put=2; put<=128; put++)
{
if(numereprimediv(put)%2 == 0)
rsp-=solve(put);
else
rsp+=solve(put);
}
cout<<rsp;
return 0;
}