关于代码中的超时

时间:2017-05-09 10:53:51

标签: c++ arrays performance

  for(int a0 = 0; a0 < t; a0++){
    long long int n;
 //taking the input limit
    cin >> n;
    long long int  n1=8,n2=34,sum=10;
    //iteration till the limit
    while(n2<=n)
    {
        long long int l=n2;
      //for finding the next even fibonacci number
        n2=4*(n2)+n1;
        n1=l;
        sum+=n1;
    }
    cout<<sum<<endl;
}

这是用于在给定极限n的情况下找到偶数斐波纳契数的总和的代码。 当我使用int代替long long int时有一个超时问题。处理不同数据类型有区别吗?如何改变性能?

1 个答案:

答案 0 :(得分:0)

你不需要让n2 = 34。 我们可以使用数组来完成这个问题,如下所示:

int a[1001];
memset(a,0,sizeof(a));
while(!EOF){
    a[0]=a[1]=1;
    cin>>n;
    for(int i=2;i<=n;i++){
        a[i]=a[i-1]+a[i-2];
    }
    cout<<a[n];
}