Я пытался представить этот код для проблемы с hackerearth, и я получаю SIGSEGV Runtime error
. Я прочитал об этой ошибке, но я не смог заставить мой код работать. Некоторые говорят, что это происходит из-за неверной ссылки на память, динамической инициализации массивов или индекса массива из-за границы.SIGSEGV - Ошибка выполнения
#include <stdio.h>
long long int f(long long int);
long long int gcd(long long int,long long int);
int main(){
long long int n,q,i;
scanf("%lld",&n);
long long int a[n];
for(i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
scanf("%lld",&q);
while(q--){
char ch;
long long int x,y,sum=0;
scanf("%c%lld%lld",&ch,&x,&y);
if(ch == 'U'){
a[x] = y;
}
else if(ch == 'C'){
for(i=x;i<=y;i++){
sum = (sum + f(a[i]))%1000000007;
}
}
printf("%lld\n",sum);
}
return 0;
}
long long int f(long long int t){
long long int i;
long long int res;
for(i=1;i<=t;i++){
res = (res + gcd(i,t))%1000000007;
}
return res;
}
long long int gcd(long long int x,long long int t){
int i;
long long int divisor=1;
for(i=1;i<=x;i++){
if(x%i == 0 && t%i == 0){
divisor = i;
}
}
return divisor;
}
, какая линия делает это segfaults? – fluter
Вы заполняете VLA, нам нужно будет узнать, что является вкладом в эту программу. –
Но да, это может быть одной из возможных причин. –