zoukankan      html  css  js  c++  java
  • [瞎搞]JZOJ 3096 Hash函数

    Description

        明明觉得hash是个好算法,代码短、效率高。某天,他碰到了一个求正方形个数的问题,于是很淡定地枚举对角线然后用hash判存在,妥妥的搞定,但是提交后却wa了几个点。仔细观察其hash函数为:h=x*y+x+y 。为了让明明知道这个函数存在什么问题,对于给出一个h值,请你来告诉他有多少对(x,y)满足上述式子(max(x,y)<=h;h,x,y都为非负整数)。


     

    Input

    多组测试数据,第一行为测试点的个数T,接下来每一行一个整数h,意义如上。


    Output

        一共T行,每行一个整数,分别表示有多少组(x,y)满足要其对应的h值。


     

    Sample Input

    3
    1
    3
    4
    

    Sample Output

    2
    3
    2
    
     

    Data Constraint

     
     

    Hint

    【样例解释】


    (1,0),(0,1)


    (0,3),(1,1),(3,0)


    (4,0),(0,4)



    【数据范围】


    对于30%数据 h<=20,000 , T<=1000


    对于100%数据 h<=100,000,000 , T<=10000;

    分析

    式子随便搞一下就会发现是h+1=(x+1)(y+1)

    那就求h+1的因子个数即可

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    int h,t;
    
    int main() {
        scanf("%d",&t);
        while (t--) {
            scanf("%d",&h);
            h++;
            int ans=0,st=sqrt(h);
            for (int i=1;i<=st;i++)
                ans+=h%i==0?(i*i==h?1:2):0;
            printf("%d
    ",ans);
        }
    }
    View Code
    在日渐沉没的世界里,我发现了你。
  • 相关阅读:
    正则表达式
    jquery获取(设置)节点的属性与属性值
    Easy UI
    javascript中数组常用的方法
    DOM节点
    Echarts的基本用法
    CSS小结
    草稿1
    CSS基础
    wordbreak:breakall和wordwrap:breakword的区别
  • 原文地址:https://www.cnblogs.com/mastervan/p/9867328.html
Copyright © 2011-2022 走看看