Pagini recente » Cod sursa (job #2547846) | Cod sursa (job #761374) | Cod sursa (job #2842953) | Cod sursa (job #1180558) | Cod sursa (job #2102843)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int nmax=100005;
string s;
int ap[67][67][67];
char a[nmax],b[nmax],c[nmax],d[200],e[200],inv[200];
long long pairs,tot;
int n,i,j,mod,x,y,z,mx,nm,num,ch;
char getnum()
{
num=0;
while(s[ch]>='0'&&s[ch]<='9')
{
num=num*10+s[ch]-'0';
ch++;
}
ch++;
return num;
}
int main()
{
ifstream f("puteri.in");
ofstream g("puteri.out");
f>>n;getline(f,s);
for(i=1;i<=n;i++)
{
getline(f,s);ch=0;
a[i]=getnum();b[i]=getnum();c[i]=getnum();
}
nm=128;
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<=nm;i++)
{
e[i]=e[i-1]+1;
if(e[i]==mod)
e[i]=0;
}
for(i=1;i<mod;i++)
inv[i]=mod-i;
for(i=1;i<=n;i++)
{
x=e[a[i]];y=e[b[i]];z=e[c[i]];
if(inv[x]<=64&&inv[y]<=64&&inv[z]<=64)
{
pairs+=ap[inv[x]][inv[y]][inv[z]];
ap[x][y][z]++;
}
}
for(i=1;i<=n;i++)
ap[e[a[i]]][e[b[i]]][e[c[i]]]=0;
if((d[mod]&1)) tot+=pairs;
else tot-=pairs;
}
g<<tot;
return 0;
}