题目链接:http://acm.swust.edu.cn/problem/0166/

Time limit(ms): 5000      Memory limit(kb): 65535
 

有如下方程组: A1*x1^3+A2*x2^3+A3*x3^3+A4*x4^3+A5*x5^3=0,其中A1…A5都在[-50,50]内。 如果(x1,x2,x3,x4,x5)(其中-50<=xi<=50,xi!=0)能让该等式成立,就说(x1,x2,x3,x4,x5)为其一组解,现在的问题是要问你该等式共有多少组解。

Description

输入包括5个系数 A1,A2,A3,A4,A5

注意:这里是多组输入哈,太坑爹了!

Input

输出该方程解的数目

Output
1
23 45 36 13 57
Sample Input
1
1436
 
 
解题思路:明显的hash,但是想了想,这里的系数[-50,50],x范围[-50,50],
     那么求得的解的变换范围为[-12500000,12500000]数组大小25000000(内存直接爆了)
     表示智商捉急~~然后晓得了还有short 这个东东(http://bbs.csdn.net/topics/370037447
     然后卡到内存ac了
代码如下:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define maxn 25000010
  4. short hash[maxn];
  5. int main(){
  6. int a[], x1, x2, x3, x4, x5, cnt, temp;
  7. while (scanf("%d%d%d%d%d", &a[], &a[], &a[], &a[], &a[]) != EOF){
  8. cnt = ;
  9. memset(hash, , sizeof(hash));
  10. for (x1 = -; x1 <= ; x1++){
  11. if (x1){
  12. for (x2 = -; x2 <= ; x2++){
  13. if (x2){
  14. temp = a[] * x1*x1*x1 + a[] * x2*x2*x2;
  15. if (temp<)
  16. temp += maxn;
  17. hash[temp]++;
  18. }
  19. }
  20. }
  21. }
  22. for (x3 = -; x3 <= ; x3++){
  23. if (x3){
  24. for (x4 = -; x4 <= ; x4++){
  25. if (x4){
  26. for (x5 = -; x5 <= ; x5++){
  27. if (x5){
  28. temp = -(a[] * x3*x3*x3 + a[] * x4*x4*x4 + a[] * x5*x5*x5);
  29. if (temp<)
  30. temp += maxn;
  31. if (hash[temp])
  32. cnt += hash[temp];
  33. }
  34. }
  35. }
  36. }
  37. }
  38. }
  39. printf("%d\n", cnt);
  40. }
  41. return ;
  42. }

但是发现有人低内存ac了,然后,然后,把每次求得的值MOD一个数,然后~~~(智商啊)

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4. #define maxn 200005
  5. int hash[maxn][], num[maxn];
  6. int main(){
  7. int i, j, k, l, cnt, tmp, mark, a[];
  8. while (~scanf("%d%d%d%d%d", &a[], &a[], &a[], &a[], &a[])){
  9. memset(num, , sizeof(num));
  10. cnt = ;
  11. for (i = -; i <= ; i++){
  12. if (i){
  13. for (j = -; j <= ; j++){
  14. if (j){
  15. tmp = a[] * i*i*i + a[] * j*j*j;
  16. mark = abs(tmp) % maxn;
  17. hash[mark][num[mark]] = tmp;
  18. num[mark]++;
  19. }
  20. }
  21. }
  22. }
  23. for (i = -; i <= ; i++){
  24. if (i){
  25. for (j = -; j <= ; j++){
  26. if (j){
  27. for (k = -; k <= ; k++){
  28. if (k){
  29. tmp = a[] * i*i*i + a[] * j*j*j + a[] * k*k*k;
  30. mark = abs(tmp) % maxn;
  31. for (l = ; l < num[mark]; l++)
  32. if (tmp == hash[mark][l]) cnt++;
  33. }
  34. }
  35. }
  36. }
  37. }
  38. }
  39. printf("%d\n", cnt);
  40. }
  41. return ;
  42. }

[Swust OJ 166]--方程的解数(hash法)的更多相关文章

  1. POJ 1186 方程的解数

    方程的解数 Time Limit: 15000MS   Memory Limit: 128000K Total Submissions: 6188   Accepted: 2127 Case Time ...

  2. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  3. NOI2001 方程的解数

    1735 方程的解数 http://codevs.cn/problem/1735/ 2001年NOI全国竞赛  时间限制: 5 s  空间限制: 64000 KB     题目描述 Descripti ...

  4. cogs 304. [NOI2001] 方程的解数(meet in the middle)

    304. [NOI2001] 方程的解数 ★★☆   输入文件:equation1.in   输出文件:equation1.out   简单对比时间限制:3 s   内存限制:64 MB 问题描述 已 ...

  5. P5691 [NOI2001]方程的解数

    题意描述 方程的解数 求方程 \(\sum_{i=1}^{n}k_ix_i^{p_i}=0(x_i\in [1,m])\) 的解的个数. 算法分析 远古 NOI 的题目就是水 类似于这道题. 做过这道 ...

  6. [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)

    题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...

  7. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  8. [ NOI 2001 ] 方程的解数

    \(\\\) \(Description\) 已知一个 \(N\) 元高次方程: \[ k_1x_1^{p_1}+k_2x_2^{p_2}+...+k_nx_n^{p_n}=0 \] 要求所有的 \( ...

  9. NTC热敏电阻温度计算方法,Steinhart-Hart方程和B值法(转)

    NTC热敏电阻计算器使用方法 NTC热敏电阻计算器 V1.0 10K负温度系数热敏电阻(NTC)温度与阻值对应关系表 Rt = R(25℃)*EXP[B*(1/T - 1/(T+25))] 说明: 1 ...

随机推荐

  1. JS 引用

    var arr1=[1,2,3,4]; var arr2=arr1; arr2.push(5); console.log(arr1);//和arr2一样 console.log(arr1==arr2) ...

  2. Bootstrap 响应式瀑布流 (使用wookmark)

    使用瀑布布局 官方 http://www.wookmark.com/jquery-plugin GitHub https://github.com/GBKS/Wookmark-jQuery  (下载后 ...

  3. 关于LD_DEBUG (转载)

    引用 LD_DEBUGThe dynamic library loader used in linux (part of glibc) has some neat tricks. One of the ...

  4. 记NOIP分数出来前

    咩~成绩还没有出来呢!但是拿到了每个人的程序,还有一堆民间的数据.我测了好多不同的数据,基本上D1T1,D2T1,D2T2的都是暴力解决掉的,没有什么问题,唯一就是D1T2的link那一题,写的时候2 ...

  5. makinacorpus/spynner

    makinacorpus/spynner Intro Contents Intro Credits Companies Authors Contributors Dependencies Feedba ...

  6. Silverlight CheckBoxList

    项目要用到复选框,可是在Silverlight中不存在CheckBoxList.通过查阅资料以及依据自己的理解,写了简单演示样例: 1.XAML <UserControl x:Class=&qu ...

  7. C++ Primer的课后规划问题的第八章

    1.写通常需要一个参数(字符串的地址).字符串和打印功能. 只要.假设提供了第二个参数(int种类),而这个参数不0,的次数的函数打印串数量为该功能将被称为(意,字符串的打印次数不等于第二个參数的值. ...

  8. .net 常用方法

    1.String数组转换成Int数组 string[] strArr =  "a,b,c".Split(','); int[] intArr = Array.ConvertAll& ...

  9. Port 8081 already in use, packager is either not running or not running correctly

    运行 react_native 时发生这个错误,解决办法 关掉端口8081对应的进程 1.打开终端,输入命令:lsof -i:8081 2.此时提示: COMMAND   PID    USER   ...

  10. C++之对象组合

    #include<stdio.h>//初始化列表 提供了对成员变量初始化的方式//Constructor        class M      {       private:      ...