4773654_ac_235ms_1844k.cpp

来自「部分PKU上的源码」· C++ 代码 · 共 56 行

CPP
56
字号
#include<iostream>
#define key 99983
#define mmax 99999999
using namespace std;
int a1,a2,a3,a4,a5;
int hash[200000][2];
int gethash(int temp)
{
	int p=temp%key;
	if(p<0) p+=key;
	return p;
}
int main()
{
	cin>>a1>>a2>>a3>>a4>>a5;
	int  i,j,k;
	for(i=0;i<200000;i++) hash[i][0]=mmax;
	for(i=-50;i<=50;i++)
	{
		if(i==0) i=1;
		for(j=-50;j<=50;j++)
		{
			if(j==0) j=1;
			int temp=a1*i*i*i+a2*j*j*j;
			int p=gethash(temp);
			while(1) 
			{
				if(hash[p][0]==temp) {hash[p][1]++;break;}
				else if(hash[p][0]==mmax) {hash[p][0]=temp;hash[p][1]=1;break;}
				p++;
			}
		}
	}
	int result=0;
	for(i=-50;i<=50;i++)
	{
	  if(i==0) i=1;
	  for(j=-50;j<=50;j++)
	  { 
		  if(j==0)	j=1;
		  for(k=-50;k<=50;k++)
		  {
			  if(k==0) k=1;
			int goal=0-a3*i*i*i-a4*j*j*j-a5*k*k*k;
			int p=gethash(goal);
			while(hash[p][0]!=mmax)
			{
				if(hash[p][0]==goal) {result+=hash[p][1];break;}
				p++;
			}
		  }
	  }
	}
	cout<<result<<endl;
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?