您的位置:首页 > 其它

<8/24>集训日记

2017-08-24 19:37 225 查看
难得这么早写一次集训日记。

今天下午的那道有关数学的题没能A出来。

POJ3252 输入两个正整数a,b,求闭区间【a,b】内有多少个round number,RN就是把十进制转化为二进制时0的个数大于等于1的个数的数。

第一遍交这个题用的最普通的方法,计算一个数的二进制下的位数以及二进制下1的个数。

这个代码是求n的二进制下有几个1,就是每次清除最后一个1然后计数。

LL Bit1(LL n)

{

    LL c =0 ;

    for (c =0; n; ++c)

    {

        n &= (n -1) ;

    }

    return c ;

}

然后不出意外的TLE了,看了看其他队也都是TLE,然后意识到应该是有技巧的,然而并没有想出来…

下面这个网址就是用数学方法解决此题的一个详解,
http://www.cnblogs.com/kuangbin/archive/2012/08/22/2651730.html
竟然可以用组合数…具体代码还没尝试…准备回家了…晚上到家再看…

以上~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: