【发布时间】:2014-03-08 12:22:31
【问题描述】:
对于这两个代码 l 最初都是 1 ,除了数组之外的所有变量都是 long long ,数组是大小为 N 的全局 int 。N 大约为 10^6。但是代码 1 超过了 5 秒的时间限制,但代码 2 以毫秒为单位运行。唯一的区别在于最后一行。 a,b,c 是小于 50 的整数变量。
使用的编译器:- g++
测试用例:- 3000000 50 50 50 1 (N,a,b,c,l)
代码1:-
for(i=1;i<N;i++)
{
j=l;
k=(j*j)%1000000;
k=(a*k)%1000000;
j=(b*j)%1000000;
l=(j+k+c)%1000000;
x=(int)l;
ar[i]=x;
}
代码2:-
for(i=1;i<N;i++)
{
j=l;
k=(j*j)%1000000;
k=(a*k)%1000000;
j=(b*j)%1000000;
l=(j+k+c)%1000000;
x=(int)l;
ar[i]=1;
}
【问题讨论】:
-
这些时间是多次运行的平均值还是仅一次?
-
您使用的是哪个编译器?你启用优化了吗?
-
你应该发布一个测试用例。未知数太多,无法得出任何有意义的结论。
-
@OMGtechy g++ 编译器,是的,优化已启用。
标签: c++