虽然这题目我曾经在我们学校OJ上做过但是我那时候是用的暴力做的,这次我用的是哈希写的,我写这题目时候开始是在main函数里面写哈希感觉很麻烦很不清晰,然后我换用函数来写,清晰了很多,写完就AC了。用哈希存储前两项的值,然后遍历后三项再去哈希表中寻找这个值在前两项中出现的次数,加起来就OK了。

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define aabs(x) (x)>0?(x):-(x)
#define mod 999983
#define t(x) (x)*(x)*(x)
struct node{
int num;
node *next;
int cnt;
}p[mod];
int sign[mod]; void hash(int res){
int key;
key=(aabs(res)) % mod;
node *op;
if(sign[key]==){
p[key].num=res;
p[key].cnt++;
p[key].next=NULL;
sign[key]=;
return;
}else if(sign[key]==){
op=&p[key];
while(){
if(res==op->num){
op->cnt++;
return ;
}
if(op->next!=NULL){
op=op->next;
}else break;
}
}
node *tmp=(node *)malloc(sizeof(node));
tmp->num=res;
tmp->cnt=;
tmp->next=NULL;
op->next=tmp;
return;
}
int find_hash(int res){
int cnt=;
int key=(aabs(res)) % mod;
if(sign[key]==){
return ;
}else if(sign[key]==){
node *op=&p[key];
while(){
if(res+op->num==){
cnt=op->cnt;
}
if(op->next!=NULL){
op=op->next;
}else break;
}
}
return cnt;
} void init(){
memset(sign,,sizeof(sign));
for(int i=;i<mod;++i){
p[i].next=NULL;
p[i].cnt=;
}
return ;
} int main(){
int a1,a2,a3,a4,a5,x1,x2,x3,x4,x5;
int i,j,key;
int res,cnt;
while(~scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5)){
cnt=;
init();
for(x1=-;x1<=;++x1){
for(x2=-;x2<=;++x2){
if(x1==||x2==) continue;
res=(t(x1))*a1+(t(x2))*a2;
hash(res);
}
} for(x3=-;x3<=;++x3)
for(x4=-;x4<=;++x4)
for(x5=-;x5<=;++x5){
if(x3==||x4==||x5==) continue;
res=t(x3)*a3+t(x4)*a4+t(x5)*a5;
cnt+=find_hash(res);
}
printf("%d\n",cnt);
}
return ;
}

poj1840 哈希的更多相关文章

  1. poj1840 五项式等于0(哈希)

    题目传送门 题意很好懂,注意一下xi不能等于0 思路:智商检测题,一开始想着五重for暴力...Orz,后来移向(把a4a5移到右边)了发现减了1e8数量级的复杂度,再次Orz,所以直接三重循环,记录 ...

  2. [PHP内核探索]PHP中的哈希表

    在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...

  3. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  4. Java 哈希表运用-LeetCode 1 Two Sum

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  5. 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希

    据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...

  6. Oracle 哈希连接原理

    <基于Oracle的sql优化>里关于哈希连接的原理介绍如下: 哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集的表连接方法. 在Oracle 7.3 ...

  7. SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)

    今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...

  8. BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2046  Solved: 749[Submit][Statu ...

  9. [bzoj3207][花神的嘲讽计划Ⅰ] (字符串哈希+主席树)

    Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天D ...

随机推荐

  1. python (1)一个简单的爬虫: python 在windows下 创建文件夹并写入文件

    1.一个简单的爬虫:爬取豆瓣的热门电影的信息 写在前面:如何创建本来存在的文件夹并写入 t_path = "d:/py/inn" #本来不存在inn,先定义路径,然后如果不存在,则 ...

  2. centos7编译安装nginx1.8

    安装pcre wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz tar -zxvf pcre-8. ...

  3. Spring中IoC的入门实例

    Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...

  4. 无状态服务(stateless service)

    一.定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本 ...

  5. $.ajax获取不到数据问题解决

    $("#updateflow").click(function () { $.ajaxSetup({ contentType: "application/json;cha ...

  6. iOS开发之检查更新

    iOS设备检查更新版本: #pragma mark - 检查更新 - (void)checkUpdateWithAPPID:(NSString *)APPID { //获取当前应用版本号 NSDict ...

  7. asterisk中使用dahdi通道呼出的注意事项

    asterisk中使用dahdi通道呼出的注意事项 在使用dahdi通道呼出的时候,可以在Dial中对呼出所使用的通道进行指定选择.以下面的例子来说明: 场景说明:数字板卡单E1,使用pri信令,1- ...

  8. angularjs ng-select ng-options 默认选中项.

    <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="utf- ...

  9. struts2的异常

    index.jsp <%@ page language="java" import="java.util.*" contentType="tex ...

  10. POJ 1149 PIGS 【网络流】

    题意: m n   //有m个猪圈,n个人卖猪. a1...am    //编号为i的猪圈里有ai头猪. b1 c1...cb1 d1   //第i个人有bi把钥匙,分别是ci猪圈的,其它猪圈里的猪都 ...