因此,我正在解决HackerEarth中的一个问题,该问题将您的代码测试到非常大的测试用例。因此,当我尝试提交代码时,它通过了前6个测试用例,另外5个通过了测试用例,并给出了“超过时间限制”,而所有其他情况都给出了SIGSEGV Signal。
代码如下:
#include<bits/stdc++.h>
#include<cmath>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long unsigned int tc,b, a , d,c;
cin>>tc;
for(int i=0;i<tc;++i)
{
cin>>a;
cin>>d;
cin>>c;
cin>>b;
long long unsigned int arr[b+1];
arr[0]=a;
arr[1]=d;
arr[2]=c;
if(b>=3){
for(long long unsigned i=3;i<=b;++i)
{
// arr[i]%=1000000007;
(arr[i])=(arr[i-1]+3*arr[i-3]+2*i)%1000000007;
arr[i]%=1000000007;
}
printf("%llu \n",arr[b]%1000000007);
}
else{
printf("%llu \n",arr[b]%1000000007);
}
}
return 0;
}
请帮助。谢谢。
答案 0 :(得分:1)
您正在尝试访问您无法访问的内存。那就是SIGSEGV的原因。您需要静态而非动态地声明数组大小。
但是,由于使用的是C ++,因此最好使用vector。