对Codility演示测试感到困惑

Joh*_*hnB 3 c# algorithm

我参加了Codility.com演示测试.

我的程序为其中一个单元测试返回了错误的值:

TEST extreme_large_numbers具有极大数字的序列测试算术溢出.

时间0.056秒.

结果错误答案得到2,但它不是平衡点,总和[0..1] = 4294967294,总和[3..3] = - 2

好吧,因为我最初在代码中看不到问题,所以我尝试在Visual Studio项目中运行它.然后编译器发现它4294967294太大了int.它需要是一个uint或一个long.所以我改变了一切long,它在VS中工作.

但是,演示测试不允许您将函数输入/返回类型更改为long.

  • 2,147,483,647(最大签名32位int)
  • 4,294,967,294(由Codility.com单位测试给出的数字)

有人可以解释一下这个程序如何可以4294967294作为一个数据值正常工作int[]吗?

替代文字

Luc*_*ero 9

您只需要在计算结果时考虑大范围,最终结果将不会超出范围.似乎您的解决方案效率不高,您可以在此处获得线性运行时.

编辑:您可以查看修订历史记录,查看运行速度快且得分为100的代码.;-)