Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:在错了无数次之后终于过了,谈下自己的想法,顺便问个问题In Reply To:在错了无数次之后终于过了,谈下自己的想法,顺便问个问题 Posted by:erex at 2009-05-14 14:08:16 > 在这里N的小于2的62次方,也就是对于__int64来说,二进制位最高两位肯定是0! > 对于带符号的64位整数,最高位是符号位,这么说,至少还有一位可以用来移位。 > 这个程序几乎不允许乘法的存在,所有乘法操作都要转化为左移然后模,左移一位是不会影响到符号位的(肯定不是拿负数去移位),模之后其不会越界(其值小于2^62)。 > 但是我有一点至今无法搞清楚,既然第62位是可以用来移位的,为什么我用带符号的就错,全改成无符号的就过了?百思不得其解。我有点怀疑是数据的问题,如果存在输入第62、63位是1,则会出错。于是本人用程序测试了一下,没有发现N的62、63位是1的情况,也就是说数据范围应该是符合要求的。 > 这下真的是无语了,希望哪位大牛能够提供一些测试数据或者直接解释一下,真的很想知道为什么用__int64带符号会错? Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator