解方程整数解的题,通过这道题我学会了这种题的一般做法,对于未知数较少、取值范围较小且解为整数的方程,把一半的未知数移到等式的另一边,然后对两边分别枚举,用哈希配对,如果有相同的结果就找到一组解。具体做法是先把一边的结果插入hash表,再把另一边的结果在hash表里查找。

Eqs

Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 16   Accepted Submission(s) : 9
Problem Description
Consider equations having the following form: 
a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 
The coefficients are given integers from the interval [-50,50]. 
It is consider a solution a system (x1, x2, x3, x4, x5) that verifies the equation, xi∈[-50,50], xi != 0, any i∈{1,2,3,4,5}.

Determine how many solutions satisfy the given equation.

 
Input
The only line of input contains the 5 coefficients a1, a2, a3, a4, a5, separated by blanks.
 
Output
The output will contain on the first line the number of the solutions for the given equation.
 
Sample Input
37 29 41 43 47
 
Sample Output
654
 
Source
PKU
 
 
 #include <iostream>
#include <stdio.h>
#include <cstring>
#include <stdlib.h>
#include <cmath>
#define seed 999983
#define inf 0x7fffffff
using namespace std; struct Hash
{
int val,next;
}h[]; int cnt;
void Insert(int n)
{
int key=abs(n)%seed;
// cout<<key<<endl;
if(h[key].val==inf) //插入的位置没有值
h[key].val=n;
else //插入的位置已有值,冲突处理
{
int i,last;
for(i=key;i!=-;i=h[i].next)
last=i;
i=last;
for(;h[i].val!=inf;i=(i+)%);
h[i].val=n;
h[last].next=i;
}
} void check(int n)
{
int key=abs(n)%seed;
if(h[key].val==inf)
return;
else
{
int i;
for(i=key;i!=-;i=h[i].next)
if(h[i].val==n)
{
// cout<<n<<' '<<h[i].val<<' '<<h[i].next<<endl;
cnt++;
}
return;
}
} int main()
{
// freopen("in.txt","r",stdin);
int a1,a2,a3,a4,a5;
cnt=;
scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5);
int i,j,k;
memset(h,-,sizeof(h));
for(i=;i<;i++)
h[i].val=inf;
for(i=-;i<=;i++)
{
if(i==) //注意未知数都不能为零
continue;
for(j=-;j<=;j++)
{
if(j==)
continue;
int tmp=-(a1*i*i*i+a2*j*j*j);
// cout<<tmp<<endl;
Insert(tmp);
}
}
for(i=-;i<=;i++)
{
if(i==)
continue;
for(j=-;j<=;j++)
{
if(j==)
continue;
for(k=-;k<=;k++)
{
if(k==)
continue;
int tmp=a3*i*i*i+a4*j*j*j+a5*k*k*k;
check(tmp);
}
}
}
printf("%d\n",cnt);
return ;
}

三部曲一(数据结构)-1024-Eqs的更多相关文章

  1. 三部曲一(数据结构)-1022-Gold Balanced Lineup

    Gold Balanced Lineup Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Othe ...

  2. 三部曲一(数据结构)-1020-Ultra-QuickSort

    通过这道题我大体理解了树状数组的原理和用法,完全用的别人的算法,我把别人算法看懂之后有自己敲了一遍,不得不说这算法真是高深巧妙啊,我开始看都看不懂,还是在别人的讲解下才看懂的,我觉得有必要写个博客记录 ...

  3. 三部曲一(数据结构)-1011-Sorting It All Out

    每次加入一个关系都要进行拓扑排序,不过在排序过程中需要判断是否出现多个入度为0的点,如果出现了就说明不能确定大小关系.不论出不出现多个入度为0的点拓扑排序都要进行到最后来判断是否出现环,因为一旦出现环 ...

  4. linux内核数据结构之kfifo

    1.前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的.缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度.例如一个进程A产 ...

  5. 浅谈算法和数据结构: 十 平衡查找树之B树

    前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种 ...

  6. Redis 5种数据结构使用及注意事项

    1优缺点 非常非常的快,有测评说比Memcached还快(当大家都是单CPU的时候),而且是无短板的快,读写都一般的快,所有API都差不多快,也没有MySQL Cluster.MongoDB那样更新同 ...

  7. redis 源码阅读 内部数据结构--字符串

    redis的内部数据结构主要有:字符串,双端链表,字典,跳跃表. 这里主要记录redise字符串的设计.相关的源码位于:src/sds.h 和 src/sds.c.   一 字符串 sds的结构体 s ...

  8. 转 浅谈算法和数据结构: 十 平衡查找树之B树

    前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为"在计算机科学中,B树(B-tre ...

  9. 标准BT.656并行数据结构

    转自网络,感谢原作者和转载者. 还有参考:百科http://baike.baidu.com/link?url=bqBT3S7pz_mRJoQE7zkE0K-R1RgQ6FmHNOZ0EjhlSAN_o ...

随机推荐

  1. 2015弱校联盟(1) - B. Carries

    B. Carries Time Limit: 1000ms Memory Limit: 65536KB frog has n integers a1,a2,-,an, and she wants to ...

  2. 2015弱校联盟(1) - I. Travel

    I. Travel Time Limit: 3000ms Memory Limit: 65536KB The country frog lives in has n towns which are c ...

  3. redhat6.3安装MySQL-server-5.6.13-1.el6.x86_64.rpm

    redhat6.3安装MySQL-server-5.6.13-1.el6.x86_64.rpm   首先下载下面三个文件:   [plain]  MySQL-client-5.6.13-1.el6.x ...

  4. PHP数据类型转换 (转)

    PHP数据类型转换 PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: •(int).(integer):转换成整形 •(float).(double).(real):转换成浮点型 •(s ...

  5. Struts2拦截器初涉

    Struts2拦截器初涉 正在练习struts,本例是从一个pdf上摘抄的例子,那本pdf都不知道叫什么名字,不过感觉很适合初学者. 在这里要实现一个简单的拦截器"GreetingInter ...

  6. struts的hello world小试

    struts的hello world小试 前面jdk的安装和配置,tomcat的安装和配置以及java ide的安装和配置就不写了. 在项目中使用流程 创建一个Web项目 导如struts 2.0.1 ...

  7. 滚动RollUp、压缩

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. CSS文本与连接

    CSS文本 CSS文本属性可以定义文本外观,通过文本属性,可以改变文本的颜色.字符间距.对齐文本.装饰文本.对文本缩进等等. 常用的文本属性 属性 描述 color 文本颜色 direction 文本 ...

  9. U9单据UI开发--单据类型UI开发

    1.在解决方案下新建UI界面项目,命名以UI作为后缀 2.先删除系统默认新建的UI界面数据模型,并新建界面数据 3.新建单据类型UIModel(界面数据),以model作为界面数据后缀名 4.修改单据 ...

  10. 《BI那点儿事—数据的艺术》理解维度数据仓库——事实表、维度表、聚合表

    事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”.一个按照州.产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似. Sate Product Mouth U ...