解方程整数解的题,通过这道题我学会了这种题的一般做法,对于未知数较少、取值范围较小且解为整数的方程,把一半的未知数移到等式的另一边,然后对两边分别枚举,用哈希配对,如果有相同的结果就找到一组解。具体做法是先把一边的结果插入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. Linux常用命令(四)

    1.xargs 作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 语法格式: # xargs [-ni] 常用参数: 参数 参数说明 -n 分组输出,n个分为一组 -i 与大括号 ...

  2. C#预处理器指令

    在C#中有许多名为“预处理指令”的命令,这些命令从来不会转化为可执行代码中的命令,但会影响编译过程的各个方面.例如,使用预处理器指令可以禁止编译器编译代码的某一部分.如果计划发布两个版本的代码,即基本 ...

  3. ajax 另外两种返回类型(json xml)

    返回json类型(例子): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...

  4. Java中request请求之 - 带文件上传的form表单

    常用系统开发中总免不了显示图片,保存一些文件资料等操作. 这些操作的背后,就是程序员最熟悉的 enctype="multipart/form-data"类型的表单. 说起file类 ...

  5. ASP.Net系列教程

    Getting Started with ASP.NET MVC This is a beginner tutorial that introduces the basics of ASP.NET M ...

  6. cellery ImportError & AttributeError

    一.zz的问题 celery 运行work要进入到 文件所在的文件夹下执行 二.AttributeError: 'Flask' object has no attribute 'user_option ...

  7. git@Osc初识

    加油! 参考博客:http://www.cnblogs.com/lpshou/archive/2013/07/18/3199243.html 今天尝试了下git@osc的项目导入,基本算是入门了git ...

  8. Spring事务管理只对出现运行期异常进行回滚

    原文:http://blog.csdn.net/abc19900828/article/details/39497631 使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择 ...

  9. python核心编程第六章练习6-13

    6-13.字符串.string模块包含三个函数,atoi(),atol()和atof(),他们分别负责把字符串转换成整型.长整型和浮点型数字.从Python 1.5起,Python的内建函数int() ...

  10. while 和 for 对比

    for 语句实例 本例中的循环使用 for 循环来显示 cars 数组中的所有值: cars=["BMW","Volvo","Saab",& ...