Cod sursa(job #1500735)

Utilizator radu_uniculeu sunt radu radu_unicul Data 12 octombrie 2015 17:16:17
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<stdio.h>
#include<vector>
#include<stdlib.h>
using namespace std;
int a1,a2,a3,a4,a5;
long long sol;
#define MOD 6007
vector<int>Hash[MOD];
int abs(int x)
{
    if(x<0) return -x;
    return x;
}
int main()
{
    freopen("ecuatii.in","r",stdin);
    freopen("ecuatii.out","w",stdout);
    scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5);
    for(int i=-50; i<51; i++)
        if(i!=0)
            for(int j=-50; j<51; j++)
                if(j!=0)
                    for(int k=-50; k<51; k++) if(k!=0)
                        {
                            int t=a1*i*i*i+a2*j*j*j+a3*k*k*k;
                            int key=abs(t%MOD);
                            Hash[key].push_back(t);
                        }
    for(int i=-50; i<51; i++)
        if(i!=0)
            for(int j=-50; j<51; j++)
                if(j!=0)
                {
                    int t2=a4*i*i*i+a5*j*j*j;
                    int key=abs(t2%MOD);
                    for(vector<int>::iterator it=Hash[key].begin(); it!=Hash[key].end(); it++)
                    {
                        if(*it==-t2) sol++;
                    }
                }
    printf("%lld",sol);
}