zoukankan      html  css  js  c++  java
  • 简单hash

    //hdu   1496
    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    #include <memory.h>
    using namespace std;
    int f1[1000005];    //保存得数是正的
    int f2[1000005];    //保存得数是负的
    int main()

    {
        int i,j,k,sum;
        int a,b,c,d;
        while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
        {
            //abcd全部大于0或者小于0,肯定无解。要加上这个,不然超时
            if(a>0&&b>0&&c>0&&d>0||a<0&&b<0&&c<0&&d<0)
            {
                printf("0 ");
                continue;
            }

    memset(f1,0,sizeof(f1));
            memset(f2,0,sizeof(f2));
            for(i=1;i<=100;i++)
            {
                for(j=1;j<=100;j++)
                {
                    k=a*i*i+b*j*j;
                    if(k>=0)f1[k]++; //k>=0 f1[k]++
                    else f2[-k]++;      //k<0  f2[k]++
                }
            }
            sum=0;

    for(i=1;i<=100;i++)
            {
                for(j=1;j<=100;j++)
                {
                    k=c*i*i+d*j*j;
                    if(k>0) sum+=f2[k]; //若k为正,加上的f2[k]
                    else sum+=f1[-k];     //若k为负,加上的f1[k]
                }
            }

            printf("%d ",16*sum); //每个解有正有负,结果有2^4种     }     return 0;

    }

  • 相关阅读:
    STM32的串口DMA收发以及双缓冲区的实现
    平衡二叉树
    二叉树的深度
    3D数学基础(四)四元数和欧拉角
    3D数学基础(三)矩阵
    3D数学基础(二)向量
    3D数学基础(一)Unity坐标系
    快速学会开发微信小程序
    苦逼的程序员
    开通博客,在这个年末,重新开始。
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4318313.html
Copyright © 2011-2022 走看看