2012-02-18 199 views
4

我在C语言中提交一个矩阵求幂代码来找到第n个斐波那契,我使用长long int变量来存储第n个斐波那契的模数10000007,并且判断给出了“超出时间限制”但是当我使用“unsigned long long int”时,我的代码在时间内被接受并且执行时间减少了。unsigned long long int

我无法理解为什么long long int给出了“超出时间限制”并且“unsigned long long int”被接受了?

+0

而且您完全有信心法官机器上的架构与您的机器相同? – 2012-02-18 05:16:59

+9

http://stackoverflow.com/questions/4712315/performance-of-nsigned-vs-signed-integers – 2012-02-18 05:18:04

+0

你在用什么架构? – jmq 2012-02-18 05:19:01

回答

5

为了不复制任何人的努力,请参阅this question(答案极端测试例,在这两种情况下,未来正确的),这more advanced question and answers同一主题的。 dthorpe的回答在this one中也非常详细。 wheaties'第一条评论here值得作为第一次审判。

+0

当我们使用unsigned与双精度混合时会有开销,但是我的代码处理乘法运算,“unsigned int”比“int”运算速度快,是的,现在我也可以通过比较两种汇编代码来检查乘法乘法...... :) – 2012-02-18 09:28:48