Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

在错了无数次之后终于过了,谈下自己的想法,顺便问个问题

Posted by erex at 2009-05-14 14:08:16 on Problem 2447
在这里N的小于2的62次方,也就是对于__int64来说,二进制位最高两位肯定是0!
对于带符号的64位整数,最高位是符号位,这么说,至少还有一位可以用来移位。
这个程序几乎不允许乘法的存在,所有乘法操作都要转化为左移然后模,左移一位是不会影响到符号位的(肯定不是拿负数去移位),模之后其不会越界(其值小于2^62)。
但是我有一点至今无法搞清楚,既然第62位是可以用来移位的,为什么我用带符号的就错,全改成无符号的就过了?百思不得其解。我有点怀疑是数据的问题,如果存在输入第62、63位是1,则会出错。于是本人用程序测试了一下,没有发现N的62、63位是1的情况,也就是说数据范围应该是符合要求的。
这下真的是无语了,希望哪位大牛能够提供一些测试数据或者直接解释一下,真的很想知道为什么用__int64带符号会错?

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator