zoukankan      html  css  js  c++  java
  • ACM题目————Equations

    Description

    Consider equations having the following form:

    a*x1^2+b*x2^2+c*x3^2+d*x4^2=0
    a, b, c, d are integers from the interval [-50,50] and any of them cannot be 0.

    It is consider a solution a system ( x1,x2,x3,x4 ) that verifies the equation, xi is an integer from [-100,100] and xi != 0, any i ∈{1,2,3,4}.

    Determine how many solutions satisfy the given equation.
     

    Input

    The input consists of several test cases. Each test case consists of a single line containing the 4 coefficients a, b, c, d, separated by one or more blanks.
    End of file.
     

    Output

    For each test case, output a single line containing the number of the solutions.
     

    Sample Input

    1 2 3 -4
    1 1 1 1
     

    Sample Output

    39088
    0
     
    哈希只会一丢丢。就不写详解了。自己体会,O(∩_∩)O哈哈~
     
    对于最后的结果要乘16,是因为,计算出来的结果可正可负,一共有 2^4 种情况
     
    using namespace std;
    const int maxn = 2000005;
    const int h = 1000000;
    int hash1[maxn];
    int a, b, c, d, sum, k;
    
    //主思路: 分两段计算 最后乘16( 2^4 )
    int main()
    {
        while(~scanf("%d %d %d %d",&a,&b, &c, &d) )
        {
            if( a>0 && b>0 && c>0 && d>0 ||
                a<0 && b<0 && c<0 && d<0 )
            {
                cout << "0" << endl ;
                continue ;
            }
            memset(hash1,0,sizeof(hash1));
            sum = 0 ;
            for(int i=1; i<=100; i++)
                for(int j=1; j<=100; j++)
                    hash1[ a * i * i + b * j * j + h ] ++ ;
            for(int i=1; i<=100; i++)
                for(int j=1; j<=100; j++)
                    sum += hash1[ h - c * i * i - d * j * j ] ;
            cout << sum*16 << endl ;
        }
    
        return 0;
    }
    
    低调做人,高调做事。
  • 相关阅读:
    Memcached 分布式缓存系统部署与调试
    nginx_笔记分享_php-fpm详解
    nginx_笔记分享_配置篇
    linux定时任务crond那些事!
    命令passwd报错因inode节点处理记录
    linux下定时任务
    linux内核堆栈
    c语言之单链表的创建及排序
    c语言常见的几种排序方法总结
    Tiny4412之外部中断
  • 原文地址:https://www.cnblogs.com/Asimple/p/5523528.html
Copyright © 2011-2022 走看看